select 时间,
[A001]=sum(case when 编号='A001' then 值 else 0 end),
[A001]=sum(case when 编号='A002' then 值 else 0 end)
from 表
group by 时间
[A001]=sum(case when 编号='A001' then 值 else 0 end),
[A001]=sum(case when 编号='A002' then 值 else 0 end)
from 表
group by 时间
解决方案 »
- MySQL的问题,纠结了一天了。麻烦那个高手大哥解决下。
- 奇怪,print和Order BY的bug?
- 请指教一个SQL语句 关于行与行计算
- ****邹建老大,诸位版主及SQL版的高手们,求一个根据浏览量排序的语句..贴子里面有具体的表结构和数据.
- 多字段的值赋给变量的问题?
- sql server 2005 导出数据至excel文件时总报错,望高手速解决,非常感谢。错误信息如下
- 数据库显示乱码问题。
- 求SQL2000的中文联机帮助文档,用google没有找到,如果有的话可以发给我
- 我要知道一个表的字段建了索引信息(如索引名,索引字段)怎么得到呀?
- 非高手莫看的问题!!!
- 求一条SQL语句!!!!!
- 请教大虾们关于表与表串联的一个问题
set @sql = 'select 时间,'
select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0 end),' from tblA group by 时间
set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
exec(@sql)
--测试
create table 表(编号 char(4),时间 datetime,值 numeric(10,2))
insert 表 select 'A001','2005-1-1 10:00:00', 11.23
insert 表 select 'A002','2005-1-1 10:00:00', 14.31
insert 表 select 'A001','2005-1-2 11:10:21', 21.12
insert 表 select 'A002','2005-1-2 11:10:21', 12.45
declare @sql varchar(6000)
set @sql = 'select 时间,'
select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0 end),' from 表 group by 编号
set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
exec(@sql)--结果
时间 A001 A002
------------------------ ------------------- -------------------
2005-01-01 10:00:00.000 11.23 14.31
2005-01-02 11:10:21.000 21.12 12.45
--删除测试环境
drop table 表
go
insert into #t select 'A001', '2005-1-1 10:00:00', 11.23
union all select 'A002', '2005-1-1 10:00:00', 14.31
union all select 'A001' ,'2005-1-2 11:10:21', 21.12
union all select 'A002' ,'2005-1-2 11:10:21', 12.45declare @sql varchar(6000)
set @sql = 'select dates,'
select @sql = @sql +' ['+ bh +']=sum(case bh when '''+ bh +''' then value else 0 end),' from #t group by bh
set @sql = left(@sql,len(@sql)-1) +' from #t group by dates' exec(@sql)
drop table #t
Set @sql = 'Select '
Select @sql = @sql + 'Max(['+编号+']) As ['+ 编号 +'],' From 表 Group By 编号
set @sql = left(@sql,len(@sql)-1) +' From ( Select 时间,值,'
select @sql = @sql +' ['+ 编号 +']= (case 编号 when '''+ 编号 +''' then 值 else null end),' From 表 Group By 编号
set @sql = left(@sql,len(@sql)-1) +' From 表 ) T_ta Group By 时间,值'
exec(@sql)
declare @sql varchar(8000)
Set @sql = 'Select 时间,'
Select @sql = @sql + 'Max(['+编号+']) As ['+ 编号 +'],' From 表 Group By 编号
set @sql = left(@sql,len(@sql)-1) +' From ( Select 时间,值,'
select @sql = @sql +' ['+ 编号 +']= (case 编号 when '''+ 编号 +''' then 值 else null end),' From 表 Group By 编号
set @sql = left(@sql,len(@sql)-1) +' From 表 ) T_ta Group By 时间,值'
exec(@sql)
还是不行,提示cas附近错误
create table 表(编号 char(4),时间 datetime,值 numeric(10,2))
insert 表 select 'A001','2005-1-1 10:00:00', 11.23
insert 表 select 'A002','2005-1-1 10:00:00', 14.31
insert 表 select 'A001','2005-1-2 11:10:21', 21.12
insert 表 select 'A002','2005-1-2 11:10:21', 12.45
declare @sql varchar(6000)
set @sql = 'select 时间,'
select @sql = @sql +' ['+ 编号 +']=sum(case 编号 when '''+ 编号 +''' then 值 else 0 end),' from 表 group by 编号
set @sql = left(@sql,len(@sql)-1) +' from 表 group by 时间'
exec(@sql)--结果
时间 A001 A002
------------------------ ------------------- -------------------
2005-01-01 10:00:00.000 11.23 14.31
2005-01-02 11:10:21.000 21.12 12.45
--删除测试环境
drop table 表
go
insert 表 select 'A001','2005-1-1 10:00:00', 11.23
insert 表 select 'A002','2005-1-1 10:00:00', 14.31
insert 表 select 'A001','2005-1-2 11:10:21', 21.12
insert 表 select 'A002','2005-1-2 11:10:21', 12.45但是如果有200个编号的时候就会出错。
insert 表 select 'A001','2005-1-1 10:00:00', 11.23
insert 表 select 'A002','2005-1-1 10:00:00', 14.31
insert 表 select 'A001','2005-1-2 11:10:21', 21.12
insert 表 select 'A002','2005-1-2 11:10:21', 12.45但是如果有200个编号的时候就会出错。
--参考邹老大的:
http://dev.csdn.net/develop/article/22/22989.shtm