假设我有三张桌子:
t1:
client_id | 传输_id | 时间戳 | 列_A |
---|---|---|---|
1 | AAA1 | 2024-10-16 10:31:27 | 香蕉 |
1 | AAA2 | 2024-10-16 11:31:27 | 柑橘 |
2 | BBB1 | 2024-10-16 09:12:14 | 苹果 |
t2:
client_id | 传输_id | 时间戳 | 栏_B |
---|---|---|---|
1 | AAA1 | 2024-10-16 10:41:27 | 巴黎 |
1 | AAA2 | 2024-10-16 11:41:27 | 伦敦 |
2 | BBB1 | 2024-10-16 09:22:14 | 纽约 |
t3:
client_id | 传输_id | 时间戳 | 栏_C |
---|---|---|---|
1 | AAA1 | 2024-10-16 10:31:27 | 吃 |
1 | AAA2 | 2024-10-16 11:31:27 | 祈祷 |
2 | BBB1 | 2024-10-16 09:12:14 | 爱 |
您可能会注意到,虽然 client_id、transmission_id 和 timestamp(我之前用作连接键)与 t1 和 t3 匹配,但时间戳数据在 t2 中不匹配。
我想连接这些表,以便时间戳数据的差异不会嵌套到不同的行中:
client_id | 传输_id | 时间戳 | 列_A | 栏_B | 栏_C |
---|---|---|---|---|---|
1 | AAA1 | 2024-10-16 10:31:27 | 香蕉 | 吃 | |
1 | AAA1 | 2024-10-16 10:41:27 | 巴黎 | ||
1 | AAA2 | 2024-10-16 11:31:27 | 柑橘 | 祈祷 | |
1 | AAA2 | 2024-10-16 11:41:27 | 伦敦 | ||
2 | BBB1 | 2024-10-16 09:12:14 | 苹果 | 爱 | |
2 | BBB1 | 2024-10-16 09:22:14 | 纽约 |
不幸的是,我对如何做到这一点有点困惑。
我尝试使用别名将不同的时间戳映射到它们自己的列(因为在没有时间戳作为键的情况下加入数据会导致歧义),例如:
client_id | 传输_id | t1_t3.时间戳 | t2.时间戳 | 列_A | 栏_B | 栏_C |
---|---|---|---|---|---|---|
1 | AAA1 | 2024-10-16 10:31:27 | 2024-10-16 10:41:27 | 香蕉 | 巴黎 | 吃 |
1 | AAA2 | 2024-10-16 11:31:27 | 2024-10-16 11:41:27 | 柑橘 | 伦敦 | 祈祷 |
2 | BBB1 | 2024-10-16 09:12:14 | 2024-10-16 09:22:14 | 苹果 | 纽约 | 爱 |
但我的愿望是拥有一个时间戳列,因为很难遵循这个玩具示例之外的“时间线”。
你需要这样做:
select client_id,transmission_id,timestamp
, max(column_A) as column_A
, max(column_b) as column_B
, max(column_C) as column_C
from (
select client_id,transmission_id,timestamp,column_A, null as column_B, null as column_c from t1
union all
select client_id,transmission_id,timestamp,null as column_A, column_B, null as column_c from t2
union all
select client_id,transmission_id,timestamp,null as column_A, null as column_B, column_c from t3
)
group by client_id,transmission_id,timestamp
输出:
client_id | 传输_id | 时间戳 | 列_a | 列_b | column_c |
---|---|---|---|---|---|
1 | AAA2 | 2024-10-16 11:31:27 | 柑橘 | 空 | 祈祷 |
1 | AAA2 | 2024-10-16 11:41:27 | 空 | 伦敦 | 空 |
2 | BBB1 | 2024-10-16 09:22:14 | 空 | 纽约 | 空 |
1 | AAA1 | 2024-10-16 10:41:27 | 空 | 巴黎 | 空 |
2 | BBB1 | 2024-10-16 09:12:14 | 苹果 | 空 | 爱 |
1 | AAA1 | 2024-10-16 10:31:27 | 香蕉 | 空 | 吃 |