我想把一张桌子贴在另一张桌子上;两个表可能有不同的列。结果应该是一个包含所有列的表,并且值不存在,它应该是缺少的观察。数据是时间序列 - 由于时间限制,我从不同的来源获得数据 - 所以我需要"堆栈"它们彼此相对,但可能是添加或删除了一个或另一个列。
由于行中有一点重叠,我正在寻找一个可以获取第一个表数据的解决方案。问题是表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
答案 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 );