给定一个包含表示开始和结束的列的表:
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;
答案 1 :(得分:0)
选择滞后(end_date,1,start_date)over(order by end_date)start_date,end_date from jtest14;