首页 > 解决方案 > 从 Start_Date 创建 End_Date 列

问题描述

我有一个带有 Start_Date 的表和一个列,重复。我可以使用什么查询来创建一个新列,该列表示开始日期之后和最接近的日期。示例输入:

开始日期
2021-03-01
2021-03-01
2021-03-01
2021-08-28
2021-08-28
2021-05-13

示例输出:

开始日期 结束日期
2021-03-01 2021-05-13
2021-03-01 2021-05-13
2021-03-01 2021-05-13
2021-08-28 无效的
2021-08-28 无效的
2021-05-13 2021-08-28

标签: sqlteradata

解决方案


更有效的方法可能是使用聚合和窗口函数:

select t.start_date, tt.end_date
from t join
     (select t.start_date, lead(t.start_date) over (order by t.start_date) as end_date
      from t
      group by t.start_date
     ) tt
     on tt.start_date = t.start_date;

我有点不清楚为什么你会在原始表格中有重复项。


推荐阅读