SQL Server查询跨多行的总小时数

时间:2017-09-18 14:35:02

标签: sql-server

我试图通过几种方式解决这个问题,并希望得到一些额外的帮助。 我想要返回相同数量的行,但是尝试计算每个服务每天为每个服务提供的总小时数。 我添加了一个重复的标志,但这并不能帮助我在1天内计算出1名员工的最长时间。

Emp Service Date        Start   End     Hrs     Duplicate   Flag    Flag hrs
Fred    xyz 14/09/2017  8:45    15:00   6.25    1          1        6.25
Fred    xyz 14/09/2017  9:00    14:15   5.25    1          0        0
Fred    xyz 14/09/2017  9:00    14:15   5.25    2          0        0
Fred    xyz 14/09/2017  9:00    15:00   6       1          0        0
John    xyz 15/09/2017  10:00   12:00   2       1          1        2
John    xyz 15/09/2017  10:00   13:00   3       1          0        0
John    xyz 15/09/2017  11:00   15:00   4       1          0        0
John    xyz 15/09/2017  12:00   16:00   4       1          1        4

最后两列是我无法弄清楚如何添加的。我尝试过Overlaps和其他ANDing方法。

谢谢,戴夫

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找一个OVER条款。不知道重复的标志是什么?如果忽略最后三列,假设它们是查询中的计算列,则可以使用...

Select 
*,
sum(Hrs) over (partition by Emp, Date, Service order by Date)
From (select distinct * from your table) x

如果最后三列是表中的实际列,则只需将派生表中的select *替换为列名,除了这三列。