Как создать таблицу из соединения с новым уникальным первичным ключом в SQL? - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь выполнить полное внешнее соединение двух таблиц и добавить уникальный идентификатор к результату в Teradata SQL.

Example:
__Table A__
id  col1
1   hi
2   hello

__Table B__
id  col1
1   hey
4   whatsup

_Table C (result full outer join)_
a_id  b_id  a_col1  b_col1
1     1     hi      hey
2     null  hello   null
null  4     null    whatsup  

Как добавить уникальный первичный ключ в таблицу C?Я хочу что-то вроде следующего:

_Table D (result full outer join with primary key "id")_
id    a_id  b_id  a_col1  b_col1
123   1     1     hi      hey
234   2     null  hello   null
567   null  4     null    whatsup  

То, что я пробовал:

create table table_c as (
select
  a_id,
  b_id,
  a.col1 as a_col1,
  b.col1 as b_col1
from table_a as a
full outer join table b
  on a.id = b.id
)

with data primary key (a_id)

Проблема с вышеупомянутым состоит в том, что он ожидает 1 первичный ключ для создания таблицы, но ни a_id, ни b_idвсегда уникальны в table_c.

1 Ответ

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

Возможно, вам действительно нужно объединить два идентификатора в один столбец:

create table table_c as
    select coalesce(a.id, b.id) as id
           a.col1 as a_col1,
           b.col1 as b_col1
    from table_a as a full outer join
         table b
          on a.id = b.id;

Если предположить, что дубликатов нет, а id не равно null ни в одной из таблиц, тогда это должно сработатьв качестве первичного ключа.

...