이 작동합니다 :
는 참고로 나는 (mm/dd/yyyy)을 사용
declare @contract table (SupplierID int, ContractStart datetime, ContractEnd datetime)
insert into @contract
select 20, '1/1/2010', '3/1/2010'
union all
select 24 , '12/12/2008', '1/12/2009'
union all
select 31, '1/13/2008 ', '2/13/2008'
union all
select 20, '1/13/2008', '2/13/2008'
union all
select 24, '11/11/2007 ', '12/11/2010'
union all
select 31, '12/12/2008 ', '1/1/2009'
SELECT a.supplierid,
a.contractstart,
a.contractend,
b.contractstart,
b.contractend
FROM @Contract a
INNER JOIN @Contract b
ON b.supplierid = a.supplierid
WHERE (b.contractstart < a.contractend)
AND (b.contractend > a.contractstart)
AND (b.contractstart != a.contractstart --Ignore overlap with self
AND b.contractend != a.contractend)
AND b.contractstart > a.contractstart -- No Duplicates