2017-06-07 16 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 

上記の表では、最初の3つのレコードが重複しています。検索するにはどうすればよいですか?私はあなたがexistsを使用することができ、以下の出力に

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

おかげ

+0

最後の2つはどうですか?それらも重複している。 –

+0

はい。その重複。私はその質問を編集した。それを見てください –

答えて

2

を必要とする:第一、第二の端の前に開始され、第二開始後に終了した場合

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 
      ); 

2つの期間が重なります。

+0

私はあなたの最後の文の最後にいくつかの混乱があると思います。 'と' ends' - 意図した暗黙の主語を挿入すると、 '第一の'か '第二の'のどちらかを代用することはできません。 –

+0

はい。あなたは正しい –

+0

各行に固有のもう1つの値を考慮する必要があります。私の場合は、それは私が質問に記載されていない支払いリストIDです –