我有一个名为[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
使用LEAD
select SessionID,
UserId,
StartDate,
EndDate,
lead(StartDate) over(partition by UserID order by StartDate) as NextStartDate
from MyTable
注意,这将不考虑任何交叉,并将为用户返回下一个开始日期,无论它们之间是否发生了结束日期