2017-06-07 108 views
0

我有一個數據在sql中的下表。我想知道重疊的日期。SQL日期重疊

ARN NO  From Date To Date 
1 106739 1/1/2015 3/31/2015 
2 106739 1/1/2015 2/28/2015 
3 106739 3/1/2015 3/31/2015 
4 106739 5/1/2015 6/30/2015 
5 106739 7/1/2015 9/30/2015 
6 106739 9/1/2015 9/30/2015 
7 106739 10/1/2015 12/31/2015 
8 106739 10/1/2015 12/31/2015 

在上表中,前三個記錄重疊。我如何編寫查詢來查找?我需要下面的輸出

NO ARN NO From Date To Date 
    4 106739 5/1/2015 6/30/2015 

感謝

+0

最後兩點呢?它們也是重疊的。 –

+0

是的。其重疊。我編輯了這個問題。請參閱 –

回答

2

您可以使用exists

select t.* 
from t 
where exists (select 1 
       from t t2 
       where t2.arnno = t.arrno and 
        t2.fromdate < t.todate and 
        t2.todate > t.fromdate 
      ); 

兩個時間段重疊,如果第二個結束前的第一次啓動和第二啓動後結束。

+0

我認爲在最後一句的結尾處有一些混淆。 '並且結束' - 如果我們插入了預期的隱含主語,我不能讓它工作取代'第一個'或'第二個'。 –

+0

是的。你是對的 –

+0

你應該考慮一個更多的值,這是每行唯一的。對於我的情況,它是付款清單ID,我沒有在問題中列出 –