次の一連のデータを前提として、結合された日付範囲の開始日と終了日が互いに交差する場合に、それらを選択する方法を決定しようとしています。
たとえば、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
編集に表示されるクエリの結果は次のとおりです。