创建小计 - SQL Server 2008

时间:2014-03-28 10:10:49

标签: sql sql-server

我有以下数据集,该数据集报告每天的员工工作时间,每天有一周的数字(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周再提供

1 个答案:

答案 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