Mam dwie tabele (Tabela A i Tabela B).
Mają różną liczbę kolumn - Powiedz, że Tabela A ma więcej kolumn.
Jak mogę połączyć te dwie tabele i uzyskać wartość null dla kolumn, których nie ma w tabeli B?
Dodaj dodatkowe kolumny jako puste dla tabeli mającej mniej kolumn, takich jak
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
, można również zrobićSelect *, Null as Col4, Null as Col5 from Table2
.Przyszedłem tutaj i zastosowałem się do powyższej odpowiedzi. Jednak niezgodność w kolejności typów danych spowodowała błąd. Przyda się poniższy opis z innej odpowiedzi.
Czy powyższe wyniki są takie same, jak sekwencja kolumn w tabeli? ponieważ wyrocznia jest surowa w kolejności kolumn. poniższy przykład generuje błąd:
ORA-01790: wyrażenie musi mieć ten sam typ danych, co odpowiadające mu wyrażenie
Jak widać, główną przyczyną błędu jest niezgodna kolejność kolumn, która jest implikowana przez użycie * jako specyfikatora listy kolumn. Tego typu błędów można łatwo uniknąć, wpisując jawnie listę kolumn:
wybierz col_a, col_b, col_c z test1_1790 union wszystkie wybierz col_a, col_b, col_c z test2_1790; Częstszym scenariuszem tego błędu jest przypadkowa zamiana (lub przesunięcie) dwóch lub więcej kolumn na liście SELECT:
LUB jeśli powyższe nie rozwiąże problemu, co powiesz na utworzenie ALIAS w kolumnach takich jak ta: (zapytanie nie jest takie samo jak twoje, ale chodzi o to, jak dodać alias w kolumnie).
źródło
Zwykle musisz mieć taką samą liczbę kolumn, gdy używasz operatorów opartych na zbiorach, aby odpowiedź Kangkana była poprawna.
SAS SQL ma określonego operatora do obsługi tego scenariusza:
Dla:
U-SQL obsługuje podobną koncepcję:
I kod:
EDYTOWAĆ:
Koncepcja unii zewnętrznej jest obsługiwana przez KQL :
Przykład:
Wynik:
próbny
źródło
jeśli tylko 1 wiersz, możesz użyć złączenia
źródło