Postgresql: добавить две таблицы с разными столбцами - PullRequest
0 голосов
/ 01 мая 2018

Я хотел бы добавить одну таблицу к другой; обе таблицы могут иметь разные столбцы. Результатом должна быть таблица со всеми столбцами, а там, где значения не существуют, это должно быть отсутствующее наблюдение. Данные представляют собой временные ряды - которые я получаю из разных источников из-за ограничений по времени - поэтому мне нужно «сложить» их друг на друга, но может случиться так, что один или другой столбец будет добавлен или удален.

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

Текущее решение состоит в том, чтобы разделить таблицу 2, чтобы не было перекрытия.

Таблица 1:

date        AA    BB    CC    DD
20100101     9    10    11    12
20100102    10    11    12    13

Таблица 2:

date        AA    BB    CC    EE    FF
20100102                99    99    10
20100103    11    12    13    14    10
20100104    12    13    14    15    11

и результат должен быть

date        AA    BB    CC    DD    EE    FF
20100101     9    10    11    12    
20100102    10    11    12    13    99    10
20100103    11    12    13          14    10
20100104    12    13    14          15    11

Так что на самом деле у меня нет ничего, к чему можно было бы «присоединиться», как предлагается здесь: SQL-объединение двух таблиц с разными столбцами

1 Ответ

0 голосов
/ 01 мая 2018

coalesce функция может использоваться следующим образом:

select coalesce(t1.date,t2.date) date, 
       coalesce(t1.aa,t2.aa) aa, 
       coalesce(t1.bb,t2.bb) bb,        
       coalesce(t1.cc,t2.cc) cc, 
       t1.dd,
       t2.ee, 
       t2.ff       
  from table1 t1 full outer join table2 t2 on ( t1.date = t2.date );

Демонстрация SQL Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...