从较新的行中选择日期

时间:2018-09-07 12:26:44

标签: sql sybase-asa

我有一个看起来像这样的表:

containerID StartDate,  EndDate
10          2018-09-01  2019-10-01  
5           2018-08-12  2019-08-01
1           2018-08-02  2019-09-01

我想要的是一条返回这些行的select语句,但是如果上面有一行,则结束日期应该是下一行的开始日期,否则相同的行结束日期

所以结果应该是这样的:

containerID StartDate,  EndDate
10          2018-09-01  2019-10-01  
5           2018-08-12  2018-09-01
1           2018-08-02  2018-08-12

如果只有一行并且按containerID降序排序时上面也没有行,它也应该工作

1 个答案:

答案 0 :(得分:0)

您可以使用窗口功能lead()

select containerId, startDate,
       lead(startDate, 1, endDate) over (partition by containerId order by startDate) as EndDate
from t;