2016-08-30 84 views
0

我想只查找那些與其他行有重疊日期的行。重疊日期返回行

例DATA:

Period: 13, Start Date: 9/1/2015, End Date: 9/30/2015 

Period: 14, Start Date: 9/15/2015, End Date: 10/30/2015 

Period: 15, Start Date: 11/1/2015, End Date: 11/30/2015 

這是我的當前查詢:

select pd1.periodNumber AS 'Period Seq A', pd1.startDate, pd1.endDate, 
pd2.periodNumber AS 'Period Seq B', pd2.startDate, pd2.endDate,  
pd2.adjustment 
from dbo.PeriodDefinition pd1 
inner join dbo.PeriodDefinition pd2 on pd2.startDate > pd1.startDate and 
pd2.startDate < pd2.endDate 
where (pd1.adjustment =1 AND pd2.adjustment = 1) 

它應該返回僅1行,並且從週期13(期間A)和週期14顯示數據(週期b )現在它返回3行,並在結果中顯示13和15。我錯過了什麼?謝謝!

回答

1
and pd2.startDate < pd2.endDate 

應該

and pd2.startDate < pd1.endDate 

我會寫

on pd2.startDate between pd1.startDate and pd1.endDate 

你也可能需要一個

and pd1.periodNumber != pd2.periodNumber 

(假設periodNumber是唯一行標識符。)

+0

* Headdesk *感謝您的證明閱讀! :d – Michelle