组合 - LEAD和LAG中间有NULL记录 - 组/等级?

时间:2015-01-14 11:12:12

标签: sql sql-server window-functions

我有一个表,用于存储每个人的任务,包括ContactID,StartDutyDateTime,EndDutyDateTime。有了LEAD / LEG功能 - 我可以找到 - "开始"责任 - 以及"结束"责任。 在不同任务之间隐藏REST时间 - 我可以确定这是新的一天还是短暂休息。 我不能选择第一个的DATE - 并检查最后一次 - 因为职责也会在午夜过后。

FullRecord

有了Lead / Leg,我发现:

if row is also Start/End of Duty - the time will show - otherwise it is NULL

我如何将每个职责合并为一行 - 我尝试了排名/行数...但这给了我无意义的结果。

我需要

  • 13.05.2014 05:00:00 - 13.05.2014 13:25:00

  • 17.05.2014 05:35:00 - 17.05.2014 13:20:00

我如何获得"最小/最大"每个工作日的日期时间(考虑到它也会超过午夜)?

1 个答案:

答案 0 :(得分:0)

也许我误解了你之后的事情,但听起来像StartDutyDate那么简单的小组,然后是min&最大

希望这有帮助。

里斯

select
    cast(StartDutyDateTime as date) as WorkingDay,
    min(StartDutyDateTime) as [Min],
    max(EndDutyDateTime) as [Max]
from
    dbo.MyTable
group by 
    cast(StartDutyDateTime as date)