静态SQL语句显示查询结果
工资表,里面有姓名、月份和工资三个字段
姓名 月份 工资
张3 1 60
张3 2 50
张3 3 40
王2 1 30
王2 2 40
王2 3 60
……
能否使用静态SQL语句查询每个人每个月的工资,查询结果如下:
姓名 1 2 3 ……
张3 60 50 40 ……
王2 30 40 60 ……
……
注:…… 表示还有数据
[解决办法]
--原始数据:@Test
declare @Test table(姓名 varchar(3),月份 int,工资 int)
insert @Test
select '张3 ',1,60 union all
select '张3 ',2,50 union all
select '张3 ',3,40 union all
select '王2 ',1,30 union all
select '王2 ',2,40 union all
select '王2 ',3,60
select
姓名,
[1]=sum(case 月份 when 1 then 工资 else 0 end),
[2]=sum(case 月份 when 2 then 工资 else 0 end),
[3]=sum(case 月份 when 3 then 工资 else 0 end),
[4]=sum(case 月份 when 4 then 工资 else 0 end),
[5]=sum(case 月份 when 5 then 工资 else 0 end),
[6]=sum(case 月份 when 6 then 工资 else 0 end),
[7]=sum(case 月份 when 7 then 工资 else 0 end),
[8]=sum(case 月份 when 8 then 工资 else 0 end),
[9]=sum(case 月份 when 9 then 工资 else 0 end),
[10]=sum(case 月份 when 10 then 工资 else 0 end),
[11]=sum(case 月份 when 12 then 工资 else 0 end),
[12]=sum(case 月份 when 12 then 工资 else 0 end)
from @Test
group by 姓名
/*
姓名123456789101112
王2304060000000000
张3605040000000000
*/
我的异常网推荐解决方案:软件开发者薪资,http://www.myexception.cn/other/1391128.html