如何获得与另一个日期字段相关的最快日期
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;
假设我有一个日期字段 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;