九牧林氏后代共多少人:SQL题:怎么把ORACLE数据库中的数据列统计转化成行显示

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 03:02:09
例:
表 T
字段1 DATE 代表日期
字段2 IN 代表收入
表形式:
DATE IN
19000101 1
19000102 21
19000103 3
……
19001231 11
要求按月统计1900年每月的收入。
统计格式为如下:
一月 二月 ………… 十二月
21 43 ………… 34
请问有什么效率比较高的SQL可以做到这样的统计的?敬请回复。谢谢

--将分组统计存入临时表
select substring([DATE],5,2),sum([IN]) into #tmp from 表 where substring([DATE],1,4)='1900' group by substring([DATE],5,2)

--生成行列转换的SQL语句
declare @sql varchar(1024)
set @sql = 'select '
select @sql = @sql + 'sum(case [DATE] when '''+[DATE]+''' then [IN] end) as '+[DATE] from (select distinct [DATE] from #tmp) as a
set @sql = @sql+' from #tmp'

--执行语句并清理临时表
exec(@sql)
drop table #tmp