行转列的合计统计问题

sunfor 2012-09-06 10:05:52
TB1
日期 工号 姓名 之前加班 之前补休 当月加班 当月补休
date1 code name add take addtime taketime
201208 001 员工1 3.0 4.0 11.0 2.0
201209 001 员工1 3.0 4.0 3.0 4.0
201210 001 员工1 3.0 4.0 1.0 1.0

使用行转列:
Select @s=@s+','+quotename(right([date1],2)+'月加班')+'=max(case when [date1]='+quotename([date1],'''')+' then [addtime] else 0 end)'+','+quotename(right([date1],2)+'月补休')+'=max(case when [date1]='+quotename([date1],'''')+' then [taketime] else 0 end)' from tb1 group by date1
set @s='select code as 工号,name as 姓名,add as 之前加班,take as 之前补休 '+@s+' from tb1 group by code,name,last_add,last_take order by code,name'
execute(@s)

得:
工号 姓名 之前加班 之前补休 08月加班 08月补休 09月加班 09月补休 10月加班 10月补休
001 员工1 3.0 4.0 11.0 2.0 3.0 4.0 1.0 1.0

现想得每个员工的一个结余时间,即:
结余时间=(之前加班+08月加班+09月加班+10月加班) - (之前补休+08月补休+09月补休+10月补休)

工号 姓名 之前加班 之前补休 08月加班 08月补休 09月加班 09月补休 10月加班 10月补休 结余时间
001 员工1 3.0 4.0 11.0 2.0 3.0 4.0 1.0 1.0 7.0

但由于统计的日期有可能是3个月,有可能是6个月,动态的,请问如何统计得到这个结余时间?多谢!
...全文
133 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunfor 2012-09-06
  • 打赏
  • 举报
回复
请各位高人指点。。。

34,590

社区成员

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

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