[英]Creating two columns from consecutive dates of a column in 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 中進行此操作需要什么樣的查詢? 我怎樣才能將第 4 行(表有其他列)的信息帶入新的開始和結束日期表?
你需要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
您可以使用lead()
:
select date as beginning_date, ending_date
from (select t.*, lead(date) over (order by date) as ending_date
from t
) t
where ending_date is not null;
這是另一個選項(相同的邏輯,不同的格式):
SELECT beginning_date, ending_date
FROM (
SELECT
MAX(date) OVER(
ORDER BY row_number ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
) AS beginning_date,
date AS ending_date
FROM mytable
) src
WHERE beginning_date IS NOT NULL -- Ignore first row
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.