我有两个A和B查询,它们的输出具有相同的字段。
现在,我需要将丢失的记录从B合并到A。 有5个同名字段,但最后一个字段的值有所不同。
除了B的每个最后一个字段都具有与A的最后一个字段不同的值之外,我无法执行其他操作。
如何执行合并?
对于合并,我只需要将条件放在两个字段上即可。
请看下面的图片。
样本输入:
查询A
Id | Name | count
1 | Test | 3
2 | Test1 | 2
查询B
Id | Name | count
1 | Test | 0
2 | Test1 | 0
3 | Test2 | 0
4 | Test3 | 0
结果应基于ID和名称列
预期结果:
Id | Name | count
1 | Test | 3
2 | Test1 | 2
3 | Test2 | 0
4 | Test3 | 0
谢谢
答案 0 :(得分:1)
使用full join
和coalesce():
with query_a(id, name, count) as (
values
(1, 'Test', 3),
(2, 'Test1', 2)
),
query_b(id, name, count) as (
values
(1, 'Test', 0),
(2, 'Test1', 0),
(3, 'Test2', 0),
(4, 'Test3', 0)
)
select id, name, coalesce(a.count, b.count) as count
from query_a a
full join query_b b using(id, name)
id | name | count
----+-------+-------
1 | Test | 3
2 | Test1 | 2
3 | Test2 | 0
4 | Test3 | 0
(4 rows)