日期:2014-05-18 浏览次数:20789 次
if object_id('[TB]') is not null drop table [TB] go create table [TB] (姓名 nvarchar(4),工资 int,奖金 int,id int,年度 int,月份 int) insert into [TB] select '张1',100,300,1,2012,1 union all select '张2',200,400,2,2012,1 union all select '张3',200,500,3,2012,1 union all select '张4',200,600,4,2012,1 union all select '张1',200,1400,12,2012,2 union all select '张2',200,1500,13,2012,2 union all select '张3',200,1600,14,2012,2 union all select '张4',200,1700,15,2012,2 select * from [TB] select 姓名 as 姓名 , max(case 月份 when 1 then 工资+奖金 else 0 end) '1月', max(case 月份 when 2 then 工资+奖金 else 0 end) '2月', max(case 月份 when 3 then 工资+奖金 else 0 end) '3月', max(case 月份 when 4 then 工资+奖金 else 0 end) '4月', max(case 月份 when 5 then 工资+奖金 else 0 end) '5月', max(case 月份 when 6 then 工资+奖金 else 0 end) '6月', max(case 月份 when 7 then 工资+奖金 else 0 end) '7月', max(case 月份 when 8 then 工资+奖金 else 0 end) '8月', max(case 月份 when 9 then 工资+奖金 else 0 end) '9月', max(case 月份 when 10 then 工资+奖金 else 0 end) '10月', max(case 月份 when 11 then 工资+奖金 else 0 end) '11月', max(case 月份 when 12 then 工资+奖金 else 0 end) '12月', SUM(工资+奖金) AS 'SUM', SUM(CASE WHEN 月份 between 1 and 3 THEN 工资+奖金 ELSE 0 END) '1季度', SUM(CASE WHEN 月份 BETWEEN 4 AND 6 THEN 工资+奖金 ELSE 0 END) '2季度', SUM(CASE WHEN 月份 BETWEEN 7 AND 9 THEN 工资+奖金 ELSE 0 END) '3季度', SUM(CASE WHEN 月份 BETWEEN 10 AND 12 THEN 工资+奖金 ELSE 0 END) '4季度' from tb group by 姓名 /* 姓名 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 SUM 1季度 2季度 3季度 4季度 ---- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 张1 400 1600 0 0 0 0 0 0 0 0 0 0 2000 2000 0 0 0 张2 600 1700 0 0 0 0 0 0 0 0 0 0 2300 2300 0 0 0 张3 700 1800 0 0 0 0 0 0 0 0 0 0 2500 2500 0 0 0 张4 800 1900 0 0 0 0 0 0 0 0 0 0 2700 2700 0 0 0 (4 行受影响) */
------解决方案--------------------