合并两个表并求和值

Merge two tables with summing up values

我有两个表,

Table1:

Key, Value
----------
1     10
2     20
3     30

Table2:

Key, Value
----------
3     30
4     40
5     50

如何使用 SQL 合并它们并获得以下内容?

Desired output:

Key, Value
----------
1     10
2     20
3     60
4     40
5     50

Python的术语中,我猜应该是两个字典的总和

PS: 我正在使用 Oracle 12c。

使用 Union all 组合两个 select 查询和 sum valuegroup by 键列

select key,sum(value) value
from 
(
select Key, Value from table1
union all
select Key, Value from table2
) a
group by key

或使用Full outer Join

SELECT COALESCE(a.Key, b.key),
       COALESCE(a.Value, 0) + COALESCE(b.value, 0)
FROM   table1 a
       FULL OUTER JOIN Table2 b
                    ON a.Key = b.Key

为了提高速度,尽量避免使用UNION/UNION ALL。试试下面我的回答:

SELECT 
      NVL(A.Key,B.Key)[Key],
     (NVL(A.Value,0) + NVL(B.Value,0))[Value] 
FROM Table1 A
FULL JOIN Table2 B ON A.Key=B.Key