【发布时间】:2021-12-03 01:49:17
【问题描述】:
我想提供一个日期范围的查询,例如 11/01/2021 - 11/30/2021。从那里我想获取该日期范围内的所有相关行,这非常简单 - 只需一个简单的选择,其中包含基于 to 和 from 日期的 where 子句。但在此之后,我想获取日期范围之前的最新行(如果存在),仅用于出现在日期范围内的外键 ID。
举个例子,
| ID | FK ID | Date |
|---|---|---|
| 1 | 101 | 09/05/2021 |
| 2 | 101 | 10/29/2021 |
| 3 | 101 | 11/05/2021 |
| 4 | 201 | 11/20/2021 |
| 5 | 301 | 08/13/2021 |
| 6 | 401 | 11/01/2021 |
| 7 | 401 | 11/23/2021 |
如果我输入的日期范围是 2021 年 11 月 1 日 - 2021 年 11 月 30 日,我希望得到以下结果
| ID | FK ID | Date |
|---|---|---|
| 2 | 101 | 10/29/2021 |
| 3 | 101 | 11/05/2021 |
| 4 | 201 | 11/20/2021 |
| 6 | 401 | 11/01/2021 |
| 7 | 401 | 11/23/2021 |
我的第一个想法是 UNION,其中第二个查询获取日期范围之前的最大日期,并与第一个查询联合,该查询具有给定日期范围内的所有值。但我认为这会因上表中的 ID 5 之类的值而失败 - 因为第二个查询没有限制它需要相同的 FK ID 存在于第一个表中。也许我只是想不通,但我想不出任何办法以这种方式限制工会?
【问题讨论】:
标签: sql sql-server