读书人

行列转换的巨难的有关问题请帮帮忙吧

发布时间: 2012-01-12 22:11:58 作者: rapoo

行列转换的巨难的问题,请各位高手帮帮忙吧,在线等呀!!50分,再加也行
我有这样一个表 其中work_id 为work_name 的编码

work_name ch_people_id work_id last_time d_date
定额工时 11NULL 2007-06-13
停电影响工时122.00 2007-06-13
备品备件影响工时130.00 2007-06-13
吊车车辆影响工时140.00 2007-06-13
操作车间影响工时150.00 2007-06-13
检修难度大影响工时160.00 2007-06-13
补偿工时 170.00 2007-06-13
估工 180.00 2007-06-13
打扫卫生 190.00 2007-06-13
开会 1100.00 2007-06-13
学习 1110.00 2007-06-13
文体活动 1120.00 2007-06-13
病假 1130.00 2007-06-13
事假 1140.00 2007-06-13
旷工 1150.00 2007-06-13
其它 1160.00 2007-06-13
定额工时 21NULL 2007-06-13
停电影响工时222.00 2007-06-13
备品备件影响工时230.00 2007-06-13
吊车车辆影响工时240.00 2007-06-13
操作车间影响工时250.00 2007-06-13
检修难度大影响工时260.00 2007-06-13
补偿工时 270.00 2007-06-13
估工 280.00 2007-06-13
打扫卫生 290.00 2007-06-13
开会 2100.00 2007-06-13


学习 2110.00 2007-06-13
文体活动 2120.00 2007-06-13
病假 2130.00 2007-06-13
事假 2140.00 2007-06-13
旷工 2150.00 2007-06-13
其它 2160.00 2007-06-13

想转换成这种类型
ch_people_id 定额工时 停电影响工时 备品备件影响工时 吊车车辆影响工时 .....
1 null 2 0 0
2 null 2 0 0
.
.
.
就是说把 这个work_name或者work_id 转成列

[解决办法]
declare @sql varchar(8000)
set @sql = ' '
select @sql = @sql + ', ' + work_name + '=sum(case when ' ' ' + work_name + ' ' ' then last_time end) '
from table group by work_name
set @sql = 'select ch_people_id ' + @sql + ' from table group by ch_people_id '
EXEC(@sql)

读书人网 >SQL Server

热点推荐