问题描述
我正在尝试联接具有不同日期字段的表,以便按时间顺序对其进行对齐。
我的表格如下:
表1:
id date_1 val
--------------------------
1 08/20/2018 0.4
1 08/21/2018 0.4
1 08/22/2018 0.5
1 10/05/2018 0.8
2 01/05/2019 0.1
2 02/10/2019 0.4
2 02/11/2019 0.3
表2:
id date_2 total
---------------------------
1 08/18/2018 31.1
1 08/19/2018 31.12
1 08/22/2018 32.08
1 08/23/2018 31.5
2 03/01/2019 22.7
如果可能,我想加入这些表并获取:
id date_1 val date_2 total
-----------------------------------------------------
1 null null 08/18/2018 31.1
1 null null 08/19/2018 31.12
1 08/20/2018 0.4 null null
1 08/21/2018 0.4 null null
1 08/22/2018 0.5 08/22/2018 32.08
1 10/05/2018 0.8 null null
2 01/05/2019 0.1 null null
2 02/10/2019 0.4 null null
2 02/11/2019 0.3 null null
2 null null 03/01/2019 22.7
因为重叠的日期很少,所以我不确定该怎么做...我只处理了左联接,其中“左”表包含“右”表中的日期。有人知道如何实现这一目标吗?
解决方法
我认为您想要full join
:
select coalesce(t1.id,t2.id) as id,t1.date_1,t1.val,t2.date_2,t2.total
from table1 t1 full join
table2 t2
on t1.id = t2.id and t1.date_1 = t2.date_2
,
@jarlh是正确的,尽管您将不得不在其中一个表中的id字段加上别名。你想要
SELECT
*
FROM
Table_1
FULL OUTER JOIN
Table_2
ON Table_1.id = Table_2.id t2id
;