2017-04-12 7 views
-1

人のID、イベントの名前、およびイベント発生の日付を含む2つのテーブルがあります。 1つのテーブルにはイベントAともう1つのイベントBが含まれているので、2つのテーブルを結合しました。その目的は、イベントAとBが同じ日に、または互いに5日以内に発生した日付を選択することです:SQLピッキング・アウト

ID  Date  Event 
1234 1/6/2012 B 
1234 1/6/2012 B 
1234 1/6/2012 B 
1234 1/6/2012 B 
1234 9/26/2013 B 
1234 9/26/2013 A 
1234 9/26/2013 B 
1234 9/26/2013 B 
1234 9/26/2013 B 
1234 1/13/2014 A 
1234 1/13/2014 B 
1234 3/20/2015 B 
1234 3/20/2015 A 
1234 12/21/2015 A 
1234 4/12/2016 A 
1234 4/12/2016 B 
1234 1/3/2017 A 
1234 1/3/2017 B 

だから私は返すようにクエリを必要とする:

ID  Date 
1234 9/26/2013 
1234 1/13/2014 
1234 3/20/2015 
1234 4/12/2016 
1234 1/3/2017 

場合事前に

ID  Date  Event 
5678 6/17/2015 A 
5678 6/18/2015 B 
5678 6/19/2015 A 

ありがとう:次のシナリオが起こる、私は以前の日付(2015年6月17日)を選び、2015年6月19日を無視することを必要としています。

+0

この結果を達成しようとしたクエリの一部をリストしてください。 –

+0

明らかに、日付データ型を使用して日付を格納します。 – Strawberry

+0

また、同じ日にいくつかの同一のイベントが発生しています。それらを解明する手段がないため、この問題は事実上不溶性である。 – Strawberry

答えて

0

これは、イベントAとBの両方が同じ日付に発生する質問の最初のシナリオを解決します。

SELECT id,date 
    FROM 
    ( 
     SELECT DISTINCT id,date,event 
      FROM Yourtable 
    ) 
GROUP BY id,date 
HAVING SUM(CASE WHEN event = 'A' THEN 1 WHEN event = 'B' THEN 1 END) = 2