SQL查询结果为二维表


 1 ---测试数据---
 2 if object_id('[tb]') is not null drop table [tb]
 3 go
 4 create table [tb]([code] varchar(6),[Month] int,[Num] int)
 5 insert [tb]
 6 select 'C00001',200401,3 union all
 7 select 'C00001',200402,1 union all
 8 select 'C00001',200403,1 union all
 9 select 'C00001',200404,3 union all
10 select 'C00001',200405,3 union all
11 select 'C00001',200604,1 union all
12 select 'C00002',200401,3 union all
13 select 'C00002',200402,2 union all
14 select 'C00002',200404,1 union all
15 select 'C00002',200405,1 union all
16 select 'C9999',200401,5 union all
17 select 'C9999',200402,2 union all
18 select 'C9999',200403,2
19 go
20 
21 ---查询---
22 declare @sql varchar(8000)
23 select 
24   @sql=isnull(@sql+',','')
25   +'sum(case when [month]='+ltrim([month])+' then num else 0 end) as ['+ltrim([month])+']'
26 from
27 (select distinct [month] from tb) t
28 
29 exec ('select code,'+@sql+' from tb group by code')
30 
31 ---结果---
32 code   200401      200402      200403      200404      200405      200604
33 ------ ----------- ----------- ----------- ----------- ----------- -----------
34 C00001 3           1           1           3           3           1
35 C00002 3           2           0           1           1           0
36 C9999  5           2           2           0           0           0
37 
38 (3 行受影响)

原文自:https://bbs.csdn.net/topics/350043942


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM