Обратное пересечение в Postgres sql двух таблиц - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть два запроса 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 | Name | count 
1  | Test | 3
2  | Test1 | 2
3  | Test2 | 0
4  | Test3 | 0

Спасибо

1 Ответ

0 голосов
/ 22 декабря 2018

Используйте 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...