我有一个表,其中包含事件发生的所有日期,但我只想显示另一个表中存在日期时发生的下一个事件。
这是我的逻辑 - 我有两张桌子:
TABLE_1
userid date event
01 2018-01-01 A
01 2018-01-02 A
02 2018-01-01 A
03 2018-01-01 B
TABLE_2
userid date
01 2018-01-01
02 NULL
到目前为止我所拥有的:
SELECT t1.userid, t1.date
FROM table_1 as t1
LEFT JOIN table_2 as t2 ON t1.userid = t2.userid
WHERE 1.event = 'A'
基本上,我想知道table_2.date is not null
是否会显示table_1.date
table_1.date > table_2.date
结果如下:
userid date
01 2018-01-02
由于userid 01在table_2中有一个日期值,所以我得到的日期大于table_2中的日期。
答案 0 :(得分:1)
让我们选择相关的子查询:
select t2.*,
(select top (1) t1.date
from table1 t1
where t1.userid = t2.userid and t1.event = 'A' and t1.date > t2.date
order by t2.date desc
) t1_date
from table2 t2
where t2.date is not null;