使用两个名称不同的字段联接两个表不起作用
我有两个桌子,
a:每小时需求量表
-----------------------------------------
datetime | customer | pastdemand | levelOfDetail |
-----------------------------------------
04-01-2019 06:00 | 444111 | 100 | 6 |
.........
04-30-2019 18:00 | 444111 | 150 | 6 |
在这里我可以有两个6或24级。我只对6级感兴趣。 表b:是客户存储的将来值的日志。
-----------------------------------------
forecastdatetime | custNumber | forecast | dateGenerated
-----------------------------------------
04-30-2019 18:00 | 444111 | 120 | 04-29-2019 18:00
..........
05-01-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
05-02-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
05-03-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
05-04-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
05-05-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
........
查询:
SELECT a.[datetime],a.customer
[demand]
,b.*
FROM a
full outer join b on a.customer=b.custNumber
and a.datetime=b.forecastdatetime
我得到的结果看起来像是左联接。
----------------------------------------------------
datetime| customer| pastdemand | forecastdatetime|custNumber|forecast| dateGenerated
-----------------------------------------
04-01-2019 06:00 | 444111 | 100 | 6 | NULL | NULL | NULL | NULL
......
04-30-2019 18:00 | 444111 | 150 | 6 | 04-30-2019 18:00 | 444111 | 120 | 04-29-2019 18:00
我想根据对每个生成日期的customer = custNumber和datetime = forecastdatetime的匹配,从A + B中常见的A +值中创建所有值的A U B表。 预期结果:
----------------------------------------------------
datetime| customer| pastdemand | forecastdatetime|custNumber|forecast| dateGenerated
-----------------------------------------
04-01-2019 06:00 | 444111 | 100 | 6 | NULL | NULL | NULL | NULL
04-02-2019 06:00 | 444111 | 100 | 6 | NULL | NULL | NULL | NULL
......
04-30-2019 18:00 | 444111 | 150 | 6 | 04-30-2019 18:00 | 444111 | 120 | 04-29-2019 18:00
NULL | NULL |NULL | NULL | 05-01-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
NULL | NULL |NULL | NULL | 05-02-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
NULL | NULL |NULL | NULL | 05-03-2019 18:00 | 444111 | 140 | 05-01-2019 18:00
NULL | NULL |NULL | NULL | ..........
您注意到,我没有得到表B中在A中不常见的部分。 我意识到,使用联合的字段名称必须相同,在这种情况下,它们不必相同。很乐意解决
答案 0 :(得分:1)
在阅读了您的问题和对注释部分的想法后,看来问题与SQL JOIN
语法无关。问题与您对列所做的select调用有关-
SELECT * FROM a
FULL OUTER JOIN b ON a.customer = b.custNumber
and a.datetime = b.forecastdatetime
所做的更改是使用
检索所有匹配和不匹配的列select * ...