计算每个日期的7天总计

时间:2015-12-01 10:28:20

标签: sql tsql

我有一个SQL Server数据库,其中存储了每个员工按日期工作的小时数。我需要计算每个员工在过去7天内每个日期工作的总工时数。

我的数据如下

Data Table

我想要制作的内容如下

Weekly Totals

我在T-SQL中用来构建产生这些结果的查询的每次尝试都不会执行,因为我一直想在子查询中引用外部查询中的字段,如下所示 -

My T-SQL

我确实考虑过使用PARTITION BY,但我认为这会给我最后7个条目的总数,而不是过去7天(日期范围)的总数,因为有时候员工没有条目某个日期(例如,注意在2015年11月2日没有Bob的条目)。

我在这里使用英国日期格式。

{Start}和{End}也是客户设置的参数,例如,如果他们想要查看11月份的所有周总数,他们会设置{Start} = 01/11/2015 {End} = 2015年11月30日。这些将在Crystal Reports中设置,而不是在TSQL中。我刚才在这里解释了我的最终目标是什么。

1 个答案:

答案 0 :(得分:3)

在SQL Server中,最简单的方法可能是使用outer apply

select t.*, tt.weekly
from t outer apply
     (select sum(t2.daily) as weekly
      from t t2
      where t2.name = t.name and
            t2.date > dateadd(day, -7, t.date) and
            t2.date <= t.date
     ) tt;