gpt4 book ai didi

SQL按日期合并3个表,其中某些日期丢失

转载 作者:行者123 更新时间:2023-12-04 05:58:19 25 4
gpt4 key购买 nike

我有 3 个要合并的表,每个表都有不同的感兴趣的列。我还有一个 id 变量,我想在“内部”id 中进行单独的合并。这个想法是我想按日期(在 ID 内)合并 X、Y 和 Z,如果特定变量不存在该日期,则缺少值。

Table X:
ID Date X
1 2012-01-01 101
1 2012-01-02 102
1 2012-01-03 103
1 2012-01-04 104
1 2012-01-05 105
2 2012-01-01 150

Table Y:
ID Date Y
1 2012-01-01 301
1 2012-01-02 302
1 2012-01-03 303
1 2012-01-11 311
2 2012-01-01 350

Table Z:
ID Date Z
1 2012-01-01 401
1 2012-01-03 403
1 2012-01-04 404
1 2012-01-11 411
1 2012-01-21 421
2 2012-01-01 450

Desired Result Table:
ID Date X Y Z
1 2012-01-01 101 301 401
1 2012-01-02 102 302 .
1 2012-01-03 103 303 403
1 2012-01-04 104 . 404
1 2012-01-05 105 . .
1 2012-01-11 . 311 411
1 2012-01-21 . . 421
2 2012-01-01 150 350 450

任何想法如何编写此 SQL 语句?我试过搞乱“完全连接”和交叉产品的 where 语句,但我不断收到一些 ID 日期组合的重复值,或者有时没有 ID。

任何帮助,将不胜感激。

最佳答案

联接可能是棘手的事情。我通常的做法是先形成Keys的集合,然后用这些keys得到我想要的。

SELECT source.ID, source.Date, x.X, y.Y, z.Z
FROM
(
SELECT ID, Date
FROM TableX
UNION
SELECT ID, Date
FROM TableY
UNION
SELECT ID, Date
FROM TableZ
) as source
LEFT JOIN TableX x ON source.ID = x.ID AND source.Date = x.Date
LEFT JOIN TableY y ON source.ID = y.ID AND source.Date = y.Date
LEFT JOIN TableZ z ON source.ID = z.ID AND source.Date = z.Date
ORDER BY source.ID, source.Date

关于SQL按日期合并3个表,其中某些日期丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com