Sql 组合-领先和滞后,中间有空记录-组/排名?

Sql 组合-领先和滞后,中间有空记录-组/排名?,sql,sql-server,window-functions,Sql,Sql Server,Window Functions,我有一个表,其中存储了每个人的任务,包括ContactID、StartDutyDateTime、EndDutyDateTime。我可以通过LEAD/LEG功能找到任务的开始和结束。 在不同的任务之间安排休息时间——我可以确定这是新的一天还是短暂的休息。 我无法选择第一次的日期,也无法检查最后一次,因为工作也将在午夜进行 对于Lead/Leg,我发现: 我怎样才能把他们合并成一行每职责一起-我尝试排名/行号。。。但这给了我一个毫无意义的结果 我需要 2014年5月13日05:00:00-2014年

我有一个表,其中存储了每个人的任务,包括ContactID、StartDutyDateTime、EndDutyDateTime。我可以通过LEAD/LEG功能找到任务的开始和结束。 在不同的任务之间安排休息时间——我可以确定这是新的一天还是短暂的休息。 我无法选择第一次的日期,也无法检查最后一次,因为工作也将在午夜进行

对于Lead/Leg,我发现:

我怎样才能把他们合并成一行每职责一起-我尝试排名/行号。。。但这给了我一个毫无意义的结果

我需要

2014年5月13日05:00:00-2014年5月13日13:25:00

2014年5月17日05:35:00-2014年5月17日13:20:00


考虑到每个工作日的最短/最长日期时间也在午夜,我怎么才能得到它呢?

也许我误解了你的意思,但它听起来像是一个简单的组,由开始到结束,然后是最小和最大

希望这有帮助

里斯


您使用的是哪种数据库管理系统?博士后?Oracle?MS SQL 2014数据库我现在筛选所有记录,其中两列均不为空。在一个CTE中,我使用了Lead——在DutyEndDateTime=0的情况下,我现在得到了一个列表,其中显示了上面所期望的项目——但在几千条记录中速度非常慢。有没有更快的方法?好吧,工作日不起作用-想象一下一个工作时间是从22:00到23:45-下一个工作时间是从00:20到03:15。如果我使用工作日,完整的工作时间将是22:00到03:15。。。这将导致两条记录,而不是一条。@BjoernRoethig-您能用一些反映您描述的示例数据更新您的问题吗?你提到的两项职责是否属于同一个职责期限?如果数据是文本而不是图片,这会有所帮助。
select
    cast(StartDutyDateTime as date) as WorkingDay,
    min(StartDutyDateTime) as [Min],
    max(EndDutyDateTime) as [Max]
from
    dbo.MyTable
group by 
    cast(StartDutyDateTime as date)