Sql 如何获取与其他日期字段相关的最早日期

Sql 如何获取与其他日期字段相关的最早日期,sql,sql-server,clarity,Sql,Sql Server,Clarity,假设我在一个表(表a)中有一个日期字段: 然后我有另一个表和另一个日期,它连接到上面的表(它们在表b的主键上连接): 您可以看到最后一列来自表a。我想获得表b的“date2”列,以提供2020年12月10日之后的最早日期,并删除其余日期 以45318为例,我只想保留第二行(即2020年10月13日),因为这是2020年10月12日之后的最早日期 如果这不合理,让我知道,我会解决它 一种方法是apply: select a.*, b.*. -- or whatever columns you wa

假设我在一个表(表a)中有一个日期字段:

然后我有另一个表和另一个日期,它连接到上面的表(它们在表b的主键上连接):

您可以看到最后一列来自表a。我想获得表b的“date2”列,以提供2020年12月10日之后的最早日期,并删除其余日期

以45318为例,我只想保留第二行(即2020年10月13日),因为这是2020年10月12日之后的最早日期


如果这不合理,让我知道,我会解决它

一种方法是
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;

MAX
或有什么问题?你试过什么?为什么它不起作用?@Larnu我想如果我得到45318的最大日期2,它会给我2020年10月24日,我不想这样。除非你的
加入
是错误的,@hanbanan。
+-------------+------------+-----------+------------+
| 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 |
+-------------+------------+-----------+------------+
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;