2017-04-14 20 views
0

代表開始和結束的鮮明連續範圍:的Oracle SQL - 給定一個表列中的日期

Start  End 
01/01/2016 03/01/2016 
01/01/2016 06/01/2016 

我試圖建立一個能夠識別出不同的範圍集合的查詢如下:

[01/01/2016, 03/01/2016) 
[03/01/2016, 06/01/2016) 

這個概念叫什麼?我怎麼用SQL實現它?

+0

那麼,如何**完全**你會定義一組範圍?如果你試圖回答這個問題,你可能會發現自己非常接近答案...... –

回答

3

你可以把所有的日期在一起,並使用lead()

with d as (
     select start as dte 
     from t 
     union -- on purpose to remove duplicates 
     select end as dte 
     from t 
    ) 
select dte as start, lead(dte) over (order by dte) as end 
from d; 

如果你想防止最終NULL值。 。 。

select d.* 
from (select dte as start, lead(dte) over (order by dte) as end 
     from d 
    ) d 
where end is not null; 
0

select lag(end_date,1,start_date)over(order by end_date)start_date,end_date from jtest14;

相關問題