mysql - 如何在 SQL 中使用 id 和最近的下一个日期连接两个表?
问题描述
考虑我有两张桌子
表 A:
ID Date1 Value
A 12/12/2019 0.75
B 01/01/2020 0.2
C 02/02/2020 0.6
D 03/03/2020 0.4
E 04/04/2020 0.8
F 05/05/2020 0.9
和表 B:
ID2 Date2 Value2
A 18/12/2019 0.9
B 06/02/2020 0.6
C 08/03/2020 0.5
A 04/04/2020 0.8
B 06/07/2020 0.7
E 07/08/2020 0.5
我想通过 ID 加入它们,但希望日期对齐,以便表 1 的记录与相同的 ID 和最近的未来日期(与 ID 相关联)链接。
我如何在 SQL 中以这种方式加入它们?
我希望它产生这样的结果:
// ID1 DATE1 VALUE1 ID2 DaTE2 VALUE 2
// A 12/12/2019 0.75 A 18/12/2019 0.9
// B 01/01/2020 0.2 B 06/02/2020 0.6
// C 02/02/2020 0.6 C 08/03/2020 0.5
// D 03/03/2020 0.4 NULL NULL NULL
// E 04/04/2020 0.8 E 07/08/2020 0.5
// F 05/05/2020 0.9 NULL NULL NULL
解决方案
您可以通过首先使用 aCommon Table Expression
来聚合 TableA 中每个 ID 的最早日期,然后在 CTE 上执行简单的 SELECT 来实现此目的。
;WITH CTE AS (
SELECT a.ID, min(b.Date2) AS EarliestFutureData
FROM TableA a
JOIN TableB b ON a.ID = b.ID2
WHERE b.Date2 > getdate()
GROUP
BY a.ID
)
SELECT * FROM CTE
推荐阅读
- c# - 无法将文件从本机反应发送到 .net 核心 api - 上传图片
- java - 在运行时查找 JAR 的模块依赖项
- bash - 手动作业变量设置中不接受带空格的字符串
- tensorflow - 如何检查模型是否被量化
- android - 我想以 HH: mm 格式显示 x 轴标签
- php - 获取所有 id 的 post meta
- php - 鉴于使用不同的域和路径前缀访问应用程序,如何处理 Symfonys trailing-slash-redirect?
- highcharts - Highcharts:如何在 xaxis 上只显示天数?
- javascript - 更改文本颜色 javascript
- github - 如何从 GitHub 执行脚本