1
考虑到以下一组数据,我试图确定如何选择组合日期范围的开始和结束日期,当它们相互交叉时。查找多组日期之间的最小和最大日期
例如,对于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
以下是编辑显示的查询结果:
谢谢你的详细解答。我会试一试。 – acedanger
@RichardTheKiwi:我刚刚遇到你用T-SQL编写的扫雷码,现在只是我的心灵爆发,而下一刻我看到你的回答这个问题太简单了。 – praveen
@Praveen感谢您的赞扬:) – RichardTheKiwi