我有一张这样的桌子。

row_number   date
----------   ----
1           2018-01-15
2           2018-01-27
3           2018-03-20
4           2019-01-30

我的目标是使如下所示。
beginning_date     ending_date
--------------     -----------
 2018-01-15        2018-01-27
 2018-01-27        2018-03-20
 2018-03-20        2019-01-30

在T-Sql中进行此查询需要什么样的查询?
如何将第四行的信息(表中有其他列)带入新的开始和结束日期表中?

最佳答案

您需要lead():

select t.*
from (select t.row_number, t.date, lead(date) over (order by t.row_number) as ending_date
      from table t
     ) t
where ending_date is not null;

编辑:如果要所有行,请删除过滤器:
select t.row_number, t.date, lead(date) over (order by t.row_number) as ending_date
from table t;

如果您希望与开始日期相同的日期没有结束日期,则可以执行以下操作:
lead(date, 1, date) over (order by t.row_number) as ending_date

关于sql - 在T-SQL中从一列的连续日期创建两列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59488223/

10-16 13:40