合并两个表并求和值
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
value
与 group 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
我有两个表,
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
value
与 group 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