我试图通过几种方式解决这个问题,并希望得到一些额外的帮助。 我想要返回相同数量的行,但是尝试计算每个服务每天为每个服务提供的总小时数。 我添加了一个重复的标志,但这并不能帮助我在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方法。
谢谢,戴夫
答案 0 :(得分:1)
我认为你正在寻找一个OVER条款。不知道重复的标志是什么?如果忽略最后三列,假设它们是查询中的计算列,则可以使用...
Select
*,
sum(Hrs) over (partition by Emp, Date, Service order by Date)
From (select distinct * from your table) x
如果最后三列是表中的实际列,则只需将派生表中的select *替换为列名,除了这三列。