У меня есть две таблицы (таблица A и таблица B).
У них разное количество столбцов - скажем, в таблице A больше столбцов.
Как я могу объединить эти две таблицы и получить null для столбцов, которых нет в таблице B?
Добавьте дополнительные столбцы как null для таблицы с меньшим количеством столбцов, например
Select Col1, Col2, Col3, Col4, Col5 from Table1
Union
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
, можно также сделать,Select *, Null as Col4, Null as Col5 from Table2
.Я пришел сюда и последовал приведенному выше ответу. Но несоответствие в порядке типа данных вызвало ошибку. Приведенное ниже описание из другого ответа пригодится.
Соответствуют ли приведенные выше результаты последовательности столбцов в вашей таблице? потому что оракул строг к порядку столбцов. в приведенном ниже примере возникает ошибка:
ORA-01790: выражение должно иметь тот же тип данных, что и соответствующее выражение
Как видите, основная причина ошибки заключается в несоответствии порядка столбцов, что подразумевается использованием * в качестве спецификатора списка столбцов. Ошибок этого типа можно легко избежать, явно указав список столбцов:
выберите col_a, col_b, col_c из test1_1790 union, все выберите col_a, col_b, col_c из test2_1790; Более частым сценарием этой ошибки является случай, когда вы случайно меняете местами (или сдвигаете) два или более столбца в списке SELECT:
ИЛИ, если приведенное выше не решает вашу проблему, как насчет создания АЛИАСА в столбцах, подобных этому: (запрос не такой, как ваш, но суть в том, как добавить псевдоним в столбец.)
источник
Обычно, когда вы используете операторы на основе наборов, вам нужно иметь одинаковое количество столбцов, поэтому ответ Кангкана правильный.
В SAS SQL есть специальный оператор для обработки этого сценария:
Для:
U-SQL поддерживает аналогичную концепцию:
И код:
РЕДАКТИРОВАТЬ:
Концепция внешнего объединения поддерживается KQL :
Пример:
Вывод:
демо
источник
если только 1 строка, вы можете использовать соединение
источник