SQL题:怎么把ORACLE数据库中的数据列统计转化成行显示

例:表T字段1DATE代表日期字段2IN代表收入表形式:DATEIN1900010111900010221190001033……1900123111要求按月统计1900年... 例:
表 T
字段1 DATE 代表日期
字段2 IN 代表收入
表形式:
DATE IN
19000101 1
19000102 21
19000103 3
……
19001231 11
要求按月统计1900年每月的收入。
统计格式为如下:
一月 二月 ………… 十二月
21 43 ………… 34
请问有什么效率比较高的SQL可以做到这样的统计的?敬请回复。谢谢
展开
 我来答
abingpow
2006-07-28 · TA获得超过2206个赞
知道大有可为答主
回答量:2830
采纳率:0%
帮助的人:2273万
展开全部
--将分组统计存入临时表
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式