SQL挑选日期

时间:2017-04-12 15:15:26

标签: mysql sql date

我有两个表,其中包含一个人的ID,事件名称和事件发生的日期。一个表包含事件A,另一个表包含事件B,因此我将这两个表联合起来。目的是挑选事件A和B在同一天或彼此在5天内发生的日期:

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

如果发生以下情况,我需要它选择较早的日期(2015年6月17日)并忽略2015年6月19日:

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

提前致谢。

1 个答案:

答案 0 :(得分: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