我需要找到日期之間的差異。表中的示例資料
CREATE TABLE #TEMP
(
StartDate DATE,
EndDate DATE
)
INSERT INTO #temp
VALUES
('12-01-2021','12-02-2021'),
('12-02-2021','12-03-2021'),
('12-03-2021','12-04-2021'),
('12-13-2021','12-14-2021'),
('12-14-2021','12-15-2021'),
('12-28-2021','12-29-2021')
所需輸出:
StartDate EndDate
12-01-2021 12-04-2021
12-13-2021 12-15-2021
12-28-2021 12-29-2021
uj5u.com熱心網友回復:
您可以使用lag來查找前一行的結束日期是開始日期的行datediff,然后為每一行保留此差異的運行總計。具有相同運行總數的行在同一組中,然后對于每個組,您可以分別獲得開始日期和結束日期的最大值和最小值以獲得所需的輸出。
如果您使用的是 sql server:
with u as
(select StartDate,
EndDate,
case when
coalesce(datediff(day, lag(EndDate) over(order by StartDate, EndDate), StartDate), 0) = 0 then 0
else 1 end as change
from #TEMP),
v as
(select *, sum(change) over(order by StartDate, EndDate rows unbounded preceding) as g
from u)
select min(StartDate) as StartDate, max(EndDate) as EndDate from v group by g
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/398124.html
上一篇:SQLiteINNERJOIN-如何僅輸出兩個表具有的公共列之一
下一篇:在Rdplyr中執行一對多連接
