我有两个表,其中包含一个人的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
提前致谢。
答案 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