Postgresql:追加两个不同列的表

时间:2018-05-01 18:50:28

标签: sql postgresql append time-series

我想把一张桌子贴在另一张桌子上;两个表可能有不同的列。结果应该是一个包含所有列的表,并且值不存在,它应该是缺少的观察。数据是时间序列 - 由于时间限制,我从不同的来源获得数据 - 所以我需要"堆栈"它们彼此相对,但可能是添加或删除了一个或另一个列。

由于行中有一点重叠,我正在寻找一个可以获取第一个表数据的解决方案。问题是表1中不存在的那些列,当我在表2中选择表1时,它们不会存在。

目前的解决方案是截止表2,以便没有重叠。

表1:

date        AA    BB    CC    DD
20100101     9    10    11    12
20100102    10    11    12    13

表2:

date        AA    BB    CC    EE    FF
20100102                99    99    10
20100103    11    12    13    14    10
20100104    12    13    14    15    11

,结果应为

date        AA    BB    CC    DD    EE    FF
20100101     9    10    11    12    
20100102    10    11    12    13    99    10
20100103    11    12    13          14    10
20100104    12    13    14          15    11

所以我实际上没有任何东西可以加入"按照此处的建议:SQL union of two tables with different columns

1 个答案:

答案 0 :(得分:5)

可以使用

coalesce函数,如下所示:

select coalesce(t1.date,t2.date) date, 
       coalesce(t1.aa,t2.aa) aa, 
       coalesce(t1.bb,t2.bb) bb,        
       coalesce(t1.cc,t2.cc) cc, 
       t1.dd,
       t2.ee, 
       t2.ff       
  from table1 t1 full outer join table2 t2 on ( t1.date = t2.date );

SQL Fiddle Demo