Я хотел бы добавить одну таблицу к другой; в обеих таблицах могут быть разные столбцы. Результатом должна быть таблица со всеми столбцами, а там, где значений не существует, должно быть пропущенное наблюдение. Данные представляют собой временные ряды, которые я получаю из разных источников из-за ограничений по временному диапазону, поэтому мне нужно «накладывать» их друг на друга, но может случиться так, что один или другой столбец добавляется или удаляется.
Поскольку в строках есть небольшое перекрытие, я ищу решение, которое могло бы использовать данные первой таблицы. Тогда проблема в том, что столбец, которого нет в таблице 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-объединение двух таблиц с разными столбцами
Функцию 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 );
@ eternity1 пожалуйста. Я рассматривал их как столбцы таблицы 2.
в обычном sql он, кажется, работает, но в python -> postgres он сообщает мне для каждой переменной t2. *, что этого не существует ... Теперь я сделал обходной путь, создав пустые столбцы в t1, чтобы оба столбца совпадали
спасибо @Barbaros Özhan. Как-то это дает мне ошибку, что таблицы t2.ee и t2.ff не существуют. Возможно, мне следовало упомянуть, что я использую Python для передачи запроса.