工资查询SQL问题
姓名 工资奖金id年度 月份
张1100300120121
张2200400220121
张3200500320121
张4200600420121
张120014001220122
张220015001320122
张320016001420122
张420017001520122
生成表2怎么实现
xh1月 2月 3月 4月5月 6月 7月 8月 9月 10月 11月 12月总计 一季度 二季度 三季度四季度
张1300 16001900 1900
张2600 17002300 2300
张3700 18002500 2500
张4800 19002700 2700
[解决办法]
if object_id('[TB]') is not null drop table [TB]gocreate table [TB] (姓名 nvarchar(4),工资 int,奖金 int,id int,年度 int,月份 int)insert into [TB]select '张1',100,300,1,2012,1 union allselect '张2',200,400,2,2012,1 union allselect '张3',200,500,3,2012,1 union allselect '张4',200,600,4,2012,1 union allselect '张1',200,1400,12,2012,2 union allselect '张2',200,1500,13,2012,2 union allselect '张3',200,1600,14,2012,2 union allselect '张4',200,1700,15,2012,2select * 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 tbgroup 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 行受影响)*/
[解决办法]
+ ' from t_XXX group by [name]'
exec(@sql)
我的异常网推荐解决方案:软件开发者薪资,http://www.myexception.cn/other/1391128.html