sql server 2k中有一数据表,字段:
部门,人员,编号,月份,工资
里面有历月工资数据
想要将此纵向表数据转出另一横向数据表,即字段为:
部门,人员,编号,月份1,月份2..
说明:月份1-12为原表中所存在的月份,其数据值分别为原表中对应月份的工资字段的值!
十万火急,请各位侠锅英雄们救俺,谢谢!
说的对,需要改一下:
select 部门,人员,编号,月份1=sum(case 月份 when '月份1' then 工资 else 0 end),月份2=sum(case 月份 when '月份2' then 工资 else 0 end),...,月份12=sum(case 月份 when '月份12' then 工资 else 0 end) from tablename group by 部门,人员,编号
这样应该没问题了,已经测试通过了,你试试看吧
[此贴子已经被作者于2006-5-26 10:03:47编辑过]
通过以上思路可以通过,我也测试没错。测试如下:
表:table1
id char(10)
month1 char(10)
gongzi char(10)
select * from table1
id month1 gongzi
01 1 500
01 2 870
01 3 898
02 1 800
02 2 254
select [id],月份1=sum(case month1 when '1' then gongzi else 0 end),月份2=sum(case month1 when '2' then gongzi else 0 end),月份3=sum(case month1 when '3' then gongzi else 0 end) from table1 group by [id]
id 月份1 月份2 月份3
01 500 870 898
02 800 254 0
不过我还没理解透这select语句,lrvinghu能不能解释一下呢?使用sum和group by 是怎么个想法。收藏。