鉴于以下一组数据,我试图确定如何选择组合日期范围的开始和结束日期,当它们相互交叉时。
例如,对于 PartNum 115678,我希望我的最终结果集显示日期范围2012/01/01 - 2012/01/19
(第 1 行、第 2 行和第 4 行合并,因为日期范围相交)和2012/02/01 - 2012/03/28
(第 3 行,因为这些与之前找到的范围不相交)。
对于 PartNum 213275,我想选择该部分的唯一行,2012/12/01 - 2013/01/01
.
编辑:我目前正在使用以下 SQL 语句,但它并没有完全满足我的需要。
with DistinctRanges as (
select distinct
ha1.PartNum "PartNum",
ha1.StartDt "StartDt",
ha2.EndDt "EndDt"
from dbo.HoldsAll ha1
inner join dbo.HoldsAll ha2
on ha1.PartNum = ha2.PartNum
where
ha1.StartDt <= ha2.EndDt
and ha2.StartDt <= ha1.EndDt
)
select
PartNum,
StartDt,
EndDt
from DistinctRanges
以下是编辑中显示的查询结果: