如果存在日期,则显示下一个日期

时间:2018-05-07 18:45:46

标签: sql sql-server tsql

我有一个表,其中包含事件发生的所有日期,但我只想显示另一个表中存在日期时发生的下一个事件。

这是我的逻辑 - 我有两张桌子:

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中的日期。

1 个答案:

答案 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;