【发布时间】:2021-02-05 17:42:58
【问题描述】:
我有一张桌子,上面有每个代理的时间表。我需要将同一日程事件的时间从多个条目分组到同一块的单个条目。
例如,突出显示的 Support 和 Admin 会话可以背靠背组合成一行。见下例:
第 9 行和第 10 行需要通过取最早的 startDt 和最晚的 EndDt 组合成一行。第 12、13、14 行同样如此。
导致:
我尝试过使用诸如 row_number()、RANK()、LAG、LEAD 等窗口函数,但这些函数都不能有效地处理这种困境。任何线索都会很棒。
谢谢。
编辑。此外,仅添加分组方法也不适合解决方案,因为分组将应用于整个列表,而不仅仅是“本地块”。
【问题讨论】:
-
为什么不使用
MIN(StartTime), MIN(StartDt), MAX(EndDt),然后按前三列分组? -
@BJones 这不起作用,因为它会在列表中的所有类别中分组。因此,对于“管理员”,它将获取第一个管理员 startDt (06/01/2021 10:00:00) 和最后一个 EndDt(06/01/2021 14:40:00) - 这当然是不正确的
标签: sql-server time grouping window-functions rank