Полное внешнее соединение, как функциональность, но объединение столбцов - PullRequest
0 голосов
/ 18 февраля 2020

TableA

id  | symbolA
 1       m
 2       n
 4       o

TableB

id  | symbolB
 2       p
 3       q
 5       r

Мне бы хотелось получить следующий результат:

id    |  symbolA     | symbolB
2          n              p
1          m              NULL
4          o              NULL
3          NULL           q
5          NULL           r

Это то, что я уже пробовал:

SELECT
  TableA.id,
  TableB.id,
  TableA.symbolA,
  TableB.symbolB
FROM
  TableA
FULL OUTER JOIN
  TableB
ON
  TableA.id = TableB.id


NewTable
TableA.id | TableA.symbolA | TableB.id | TableA.symbolB
    2             n             2               p
    1             m             NULL            NULL
    4             o             NULL            NULL
    NULL       NULL             3               q
    NULL       NULL             5               r

Я уже пробовал полное внешнее соединение в сочетании с коалесцией, но это не совсем дает желаемый результат. Язык BigQuery, хотя я надеюсь, что в моем запросе нет ничего особенного c, который бы не сделал его SQL языковой агенцией c. Спасибо.

1 Ответ

3 голосов
/ 18 февраля 2020

Вы почти у цели. Вам просто нужно объединить два id столбца.

Для этого вы можете использовать coalesce():

select
    coalesce(a.id, b.id) id,
    a.symbola,
    b.symbolb
from tablea a
full outer join tableb b on a.id = b.id

Следующий синтаксис, который объединяется с using, также должен работать ( большинство баз данных, которые поддерживают full join, допускают это):

select
    id,
    a.symbola,
    b.symbolb
from tablea a
full outer join tableb b using(id)
...