连接具有不同日期字段的表

问题描述

我正在尝试联接具有不同日期字段的表,以便按时间顺序对其进行对齐。

我的表格如下:

表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
;

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...