Postgresql: добавить две таблицы с разными столбцами

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

Поскольку в строках есть небольшое перекрытие, я ищу решение, которое могло бы использовать данные первой таблицы. Тогда проблема в том, что столбец, которого нет в таблице 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-объединение двух таблиц с разными столбцами

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
2 338
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Функцию 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

спасибо @Barbaros Özhan. Как-то это дает мне ошибку, что таблицы t2.ee и t2.ff не существуют. Возможно, мне следовало упомянуть, что я использую Python для передачи запроса.

eternity1 02.05.2018 00:34

@ eternity1 пожалуйста. Я рассматривал их как столбцы таблицы 2.

Barbaros Özhan 02.05.2018 09:01

в обычном sql он, кажется, работает, но в python -> postgres он сообщает мне для каждой переменной t2. *, что этого не существует ... Теперь я сделал обходной путь, создав пустые столбцы в t1, чтобы оба столбца совпадали

eternity1 02.05.2018 22:04

Другие вопросы по теме