我有以下数据集,该数据集报告每天的员工工作时间,每天有一周的数字(1或2),为期两周。
SiteId SiteName EmployeeId FirstName SurName Date WorkedHours WorkedMinutes WeekNo
4 Test 7 Steve Stone 2014-03-01 4.5 270 1
4 Test 7 Steve Stone 2014-03-02 9 540 1
4 Test 7 Steve Stone 2014-03-03 4.5 270 1
4 Test 7 Steve Stone 2014-03-08 4.5 270 2
4 Test 7 Steve Stone 2014-03-09 9 540 2
4 Test 7 Steve Stone 2014-03-10 4.5 270 2
我想为每个员工每周添加一小部分工作时间和工作时间。因此,期望的结果将在每周的每个部分结束时排成一行,这将为第1周提供总计,然后在第2周再提供
答案 0 :(得分:1)
如果您使用的是SQL Server 2008或更高版本,则应该查看GROUPING SETS
。它们比Rollup
快得多。它是执行此类任务的绝佳功能。
我最近实现了类似的逻辑
select EmpId, Year, FaciLeaveType, Month, DateValue , Sum(Leaves)
FROM EmplLeave
GROUP BY
GROUPING SETS(
( EmpId,Year,FaciLeaveType,Month,DateValue )
,( EmpId,Year,FaciLeaveType,Month )
,( EmpId,Year,FaciLeaveType )
)
https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx