我有一个看起来像这样的表:
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降序排序时上面也没有行,它也应该工作
答案 0 :(得分:0)
您可以使用窗口功能lead()
:
select containerId, startDate,
lead(startDate, 1, endDate) over (partition by containerId order by startDate) as EndDate
from t;