如何获得与另一个日期字段相关的最快日期

How to get the soonest date in relation to another date field

假设我有一个日期字段 table (table a):

+---------+------------+
| item_id | Date       |
+---------+------------+
| 12333   | 10/12/2020 |
+---------+------------+
| 45678   | 10/12/2020 |
+---------+------------+

然后我有另一个 table 和另一个日期,它加入到上面的 table (他们加入 table b 的主键):

+-------------+------------+-----------+------------+
| primary_key | date2      | item_id   | Date       |
| (table b)   | (table b)  | (table a) | (table a)  |
+-------------+------------+-----------+------------+
| 45318       | 10/10/2020 | 12333     | 10/12/2020 |
+-------------+------------+-----------+------------+
| 45318       | 10/13/2020 | 12333     | 10/12/2020 |
+-------------+------------+-----------+------------+
| 45318       | 10/24/2020 | 12333     | 10/12/2020 |
+-------------+------------+-----------+------------+
| 75394       | 10/20/2020 | 45678     | 10/12/2020 |
+-------------+------------+-----------+------------+

你看最后一列来自table a。我想获取 table b 的“date2”列,给我 2020 年 10 月 12 日之后的最快日期,并删除其余日期。

所以对于 45318 的例子,我只想保留第二行(10/13/2020),因为那是 10/12/2020 之后的最快日期。

如果这没有意义,请告诉我,我会改正!

一种方法是apply:

select a.*, b.*. -- or whatever columns you want
from a outer apply
     (select top (1) b.*
      from b
      where b.item_id = a.item_id and
            b.date2 >= '2020-10-12'
      order by b.date2 asc
     ) b;