选择用户的下一次登录时间

时间:2018-08-01 08:29:24

标签: sql sql-server

我有一个名为[Session]的表

|SessionId | UserId | StartDate| EndDate |

|    1     |    1   | 09:00     |  11:00 |
|    2     |    2   | 09:10     |  11:10 |
|    2     |    1   | 11:20     |  15:00 |

如何为每个用户返回带有名为NextStart Date的额外列的表结果?因此,在上述示例中,第一行将返回

|SessionId | UserId | StartDate| EndDate | NextStartDate

|    1     |    1   | 09:00     |  11:00 | 11:20

1 个答案:

答案 0 :(得分:5)

使用铅

select SessionID, 
       UserId, 
       StartDate, 
       EndDate, 
       lead(StartDate) over(partition by UserID order by StartDate) as NextStartDate
from MyTable

请注意,这不会考虑任何交叉,并且将为用户返回下一个开始日期,无论它们之间是否发生了结束日期