行转列的合计统计问题
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个月,动态的,请问如何统计得到这个结余时间?多谢!