行列转换的巨难的问题,请各位高手帮帮忙吧,在线等呀!!50分,再加也行

radeonle 2007-06-18 12:17:01
我有这样一个表 其中work_id 为work_name 的编码

work_name ch_people_id work_id last_time d_date
定额工时 1 1 NULL 2007-06-13
停电影响工时 1 2 2.00 2007-06-13
备品备件影响工时 1 3 0.00 2007-06-13
吊车车辆影响工时 1 4 0.00 2007-06-13
操作车间影响工时 1 5 0.00 2007-06-13
检修难度大影响工时 1 6 0.00 2007-06-13
补偿工时 1 7 0.00 2007-06-13
估工 1 8 0.00 2007-06-13
打扫卫生 1 9 0.00 2007-06-13
开会 1 10 0.00 2007-06-13
学习 1 11 0.00 2007-06-13
文体活动 1 12 0.00 2007-06-13
病假 1 13 0.00 2007-06-13
事假 1 14 0.00 2007-06-13
旷工 1 15 0.00 2007-06-13
其它 1 16 0.00 2007-06-13
定额工时 2 1 NULL 2007-06-13
停电影响工时 2 2 2.00 2007-06-13
备品备件影响工时 2 3 0.00 2007-06-13
吊车车辆影响工时 2 4 0.00 2007-06-13
操作车间影响工时 2 5 0.00 2007-06-13
检修难度大影响工时 2 6 0.00 2007-06-13
补偿工时 2 7 0.00 2007-06-13
估工 2 8 0.00 2007-06-13
打扫卫生 2 9 0.00 2007-06-13
开会 2 10 0.00 2007-06-13
学习 2 11 0.00 2007-06-13
文体活动 2 12 0.00 2007-06-13
病假 2 13 0.00 2007-06-13
事假 2 14 0.00 2007-06-13
旷工 2 15 0.00 2007-06-13
其它 2 16 0.00 2007-06-13

想转换成这种类型
ch_people_id 定额工时 停电影响工时 备品备件影响工时 吊车车辆影响工时 .....
1 null 2 0 0
2 null 2 0 0
.
.
.
就是说把 这个work_name或者work_id 转成列
...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellowork 2007-06-18
  • 打赏
  • 举报
回复
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)
radeonle 2007-06-18
  • 打赏
  • 举报
回复
恩谢谢了给分
firefoxh 2007-06-18
  • 打赏
  • 举报
回复
不就是列转行嘛。

楼上说的没错。
hellowork 2007-06-18
  • 打赏
  • 举报
回复
是的.
抱歉,更正一下:
declare @sql varchar(8000)
set @sql = ''
select @sql = @sql + ',' + work_name + '=sum(case WORK_NAME 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)
radeonle 2007-06-18
  • 打赏
  • 举报
回复
是 case when work_name =''' + work_name + ''' then work_time_last end 这个意思吗?
radeonle 2007-06-18
  • 打赏
  • 举报
回复
case when ''' + work_name + ''' then work_time_last end
这段好象有问题

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧