Ich habe zwei Tabellen (Tabelle A und Tabelle B).
Diese haben eine unterschiedliche Anzahl von Spalten - Angenommen, Tabelle A enthält mehr Spalten.
Wie kann ich diese beiden Tabellen vereinen und null für die Spalten erhalten, die Tabelle B nicht hat?
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
kann man auch ,Select *, Null as Col4, Null as Col5 from Table2
.Ich kam hierher und folgte der obigen Antwort. Eine Nichtübereinstimmung in der Reihenfolge des Datentyps verursachte jedoch einen Fehler. Die folgende Beschreibung aus einer anderen Antwort wird nützlich sein.
Entsprechen die obigen Ergebnisse der Spaltenfolge in Ihrer Tabelle? weil Orakel in Spaltenreihenfolgen streng ist. Dieses Beispiel unten erzeugt einen Fehler:
ORA-01790: Ausdruck muss denselben Datentyp wie der entsprechende Ausdruck haben
Wie Sie sehen, liegt die Hauptursache des Fehlers in der nicht übereinstimmenden Spaltenreihenfolge, die durch die Verwendung von * als Spaltenlistenspezifizierer impliziert wird. Diese Art von Fehlern kann leicht vermieden werden, indem die Spaltenliste explizit eingegeben wird:
wähle col_a, col_b, col_c aus test1_1790 union alle wähle col_a, col_b, col_c aus test2_1790; Ein häufigeres Szenario für diesen Fehler ist, wenn Sie versehentlich zwei oder mehr Spalten in der SELECT-Liste vertauschen (oder verschieben):
ODER wenn das oben genannte Problem nicht gelöst werden kann, können Sie einen ALIAS in den folgenden Spalten erstellen : (Die Abfrage ist nicht mit Ihrer identisch, aber hier geht es darum, wie Sie einen Alias in die Spalte einfügen .)
quelle
Normalerweise müssen Sie die gleiche Anzahl von Spalten haben, wenn Sie satzbasierte Operatoren verwenden, damit Kangkans Antwort korrekt ist.
SAS SQL verfügt über einen bestimmten Operator für dieses Szenario:
Zum:
U-SQL unterstützt ein ähnliches Konzept:
Und Code:
BEARBEITEN:
Das Konzept der äußeren Vereinigung wird von KQL unterstützt :
Beispiel:
Ausgabe:
Demo
quelle
Wenn nur 1 Zeile, können Sie join verwenden
quelle