J'ai deux tableaux (tableau A et tableau B).
Ceux-ci ont un nombre différent de colonnes - Disons que le tableau A a plus de colonnes.
Comment puis-je unir ces deux tables et obtenir null pour les colonnes que la table B n'a pas?
Ajoutez des colonnes supplémentaires comme nulles pour la table ayant moins de colonnes comme
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
, on peut aussi faireSelect *, Null as Col4, Null as Col5 from Table2
,.Je suis venu ici et j'ai suivi la réponse ci-dessus. Mais la non-concordance dans l'ordre du type de données a provoqué une erreur. La description ci-dessous d'une autre réponse vous sera utile.
Les résultats ci-dessus sont-ils identiques à la séquence des colonnes de votre tableau? car oracle est strict dans l'ordre des colonnes. cet exemple ci-dessous produit une erreur:
ORA-01790: l'expression doit avoir le même type de données que l'expression correspondante
Comme vous le voyez, la cause première de l'erreur réside dans l'ordre des colonnes incompatible qui est impliqué par l'utilisation de * comme spécificateur de liste de colonnes. Ce type d'erreurs peut être facilement évité en entrant explicitement la liste des colonnes:
sélectionnez col_a, col_b, col_c de test1_1790 union tous sélectionnez col_a, col_b, col_c de test2_1790; Un scénario plus fréquent pour cette erreur est lorsque vous échangez (ou déplacez) par inadvertance deux colonnes ou plus dans la liste SELECT:
OU si ce qui précède ne résout pas votre problème, que diriez-vous de créer un ALIAS dans les colonnes comme ceci: (la requête n'est pas la même que la vôtre mais le point ici est de savoir comment ajouter un alias dans la colonne.)
la source
Normalement, vous devez avoir le même nombre de colonnes lorsque vous utilisez des opérateurs basés sur des ensembles afin que la réponse de Kangkan soit correcte.
SAS SQL a un opérateur spécifique pour gérer ce scénario:
Pour:
U-SQL prend en charge un concept similaire:
Et code:
ÉDITER:
Le concept d'union externe est pris en charge par KQL :
Exemple:
Production:
démo
la source
si seulement 1 ligne, vous pouvez utiliser join
la source