PostgreSQL:追加两个具有不同列的表

ete*_*ty1 1 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
Run Code Online (Sandbox Code Playgroud)

表2:

date        AA    BB    CC    EE    FF
20100102                99    99    10
20100103    11    12    13    14    10
20100104    12    13    14    15    11
Run Code Online (Sandbox Code Playgroud)

结果应该是

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
Run Code Online (Sandbox Code Playgroud)

因此,我实际上没有按此处建议的方法“加入”:两个具有不同列的表的SQL联合

Bar*_*han 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 );
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示