Eu tenho duas tabelas (Tabela A e Tabela B).
Eles têm um número diferente de colunas - digamos que a Tabela A tem mais colunas.
Como posso unir essas duas tabelas e obter null para as colunas que a Tabela B não possui?
Adicione colunas extras como nulas para a tabela com menos colunas como
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
, também se pode fazerSelect *, Null as Col4, Null as Col5 from Table2
,.Eu vim aqui e segui a resposta acima. Mas a incompatibilidade na ordem do tipo de dados causou um erro. A descrição abaixo de outra resposta será útil.
Os resultados acima são iguais à sequência de colunas da sua tabela? porque oracle é estrito na ordem das colunas. este exemplo abaixo produz um erro:
ORA-01790: a expressão deve ter o mesmo tipo de dados da expressão correspondente
Como você pode ver, a causa raiz do erro está na ordem de coluna incompatível que está implícita no uso de * como especificador de lista de coluna. Esse tipo de erro pode ser facilmente evitado inserindo a lista de colunas explicitamente:
selecione col_a, col_b, col_c de test1_1790 union all selecione col_a, col_b, col_c de test2_1790; Um cenário mais frequente para esse erro é quando você inadvertidamente troca (ou muda) duas ou mais colunas na lista SELECT:
OU se o acima não resolver seu problema, que tal criar um ALIAS nas colunas como esta: (a consulta não é a mesma que a sua, mas o ponto aqui é como adicionar um alias na coluna).
fonte
Normalmente, você precisa ter o mesmo número de colunas ao usar operadores baseados em conjuntos, então a resposta de Kangkan está correta.
SAS SQL tem um operador específico para lidar com esse cenário:
Para:
U-SQL oferece suporte a conceitos semelhantes:
E código:
EDITAR:
O conceito de união externa é suportado por KQL :
Exemplo:
Resultado:
demo
fonte
se apenas 1 linha, você pode usar join
fonte