日期:2014-05-18  浏览次数:20621 次

静态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 姓名

/*
姓名 1 2 3 4 5 6 7 8 9 10 11 12
王2 30 40 60 0 0 0 0 0 0 0 0 0
张3 60 50 40 0 0 0 0 0 0 0 0 0
*/
我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html