【发布时间】:2018-09-02 00:07:01
【问题描述】:
给出下表显示计算机上的登录时间,如果有人可以帮助我编写一个 MS SQL 查询,它将提供表 2 中的聚合时间跨度,我将不胜感激:
表1(数据):
Usrkey Username DateTime_From DateTime_To
1 Fox 2012-01-01 08:00 2012-01-01 08:15
1 Fox 2012-01-01 08:20 2012-01-01 08:25
2 Foxi 2012-01-01 09:30 2012-01-01 09:40
2 Foxi 2012-01-01 10:20 2012-01-01 10:25
1 Fox 2012-01-01 10:30 2012-01-01 10:35
1 Fox 2012-01-01 11:00 2012-01-01 11:40
2 Foxi 2012-01-01 12:50 2012-01-01 13:25
2 Foxi 2012-01-02 08:20 2012-01-02 08:25
2 Foxi 2012-01-02 09:20 2012-01-02 09:25
1 Fox 2012-01-02 11:30 2012-01-02 11:45
1 Fox 2012-01-02 12:50 2012-01-02 13:00
1 Fox 2012-01-02 13:20 2012-01-02 14:00
Table2(期望的结果):
Usrkey Username RangeFrom RangeTo
1 Fox 2012-01-01 08:00 2012-01-01 08:25
2 Foxi 2012-01-01 09:30 2012-01-01 10:25
1 Fox 2012-01-02 10:30 2012-01-01 11:40
2 Foxi 2012-01-01 12:50 2012-01-02 09:25
1 Fox 2012-01-02 11:30 2012-01-02 14:00
【问题讨论】:
-
到目前为止你尝试了什么?
-
对我来说似乎是一个孤岛问题。有 1000 多个关于如何解决这些问题的答案。
-
我尝试过使用窗口函数以及 LAG 和 LEAD 函数,但没有得到想要的结果。
-
请把你试过的SQL贴出来。
标签: sql-server datetime aggregation window-functions