开发者社区> 问答> 正文

从T-SQL中的列的连续日期创建两列

我有一张这样的桌子。

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中进行此查询需要什么样的查询?我还如何将第四行的信息(表中有其他列)引入新的开始和结束日期表?

展开
收起
祖安文状元 2020-01-04 15:59:43 532 0
1 条回答
写回答
取消 提交回答
  • 您需要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
    
    2020-01-04 16:00:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载