Saya memiliki dua tabel (Tabel A dan Tabel B).
Ini memiliki jumlah kolom yang berbeda - Katakanlah Tabel A memiliki lebih banyak kolom.
Bagaimana cara menggabungkan dua tabel ini dan mendapatkan null untuk kolom yang tidak dimiliki Tabel B?
Tambahkan kolom ekstra sebagai null untuk tabel yang memiliki lebih sedikit kolom seperti
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
, seseorang juga bisa melakukanSelect *, Null as Col4, Null as Col5 from Table2
,.Saya datang ke sini dan mengikuti jawaban di atas. Tetapi ketidakcocokan dalam urutan tipe data menyebabkan kesalahan. Deskripsi di bawah ini dari jawaban lain akan berguna.
Apakah hasil di atas sama dengan urutan kolom di tabel Anda? karena oracle sangat ketat dalam urutan kolom. contoh di bawah ini menghasilkan kesalahan:
ORA-01790: ekspresi harus memiliki tipe data yang sama sebagai ekspresi yang sesuai
Seperti yang Anda lihat, akar penyebab kesalahan ada dalam urutan kolom yang tidak cocok yang diimplikasikan oleh penggunaan * sebagai penentu daftar kolom. Jenis kesalahan ini dapat dengan mudah dihindari dengan memasukkan daftar kolom secara eksplisit:
pilih col_a, col_b, col_c dari test1_1790 union semua pilih col_a, col_b, col_c dari test2_1790; Skenario yang lebih sering untuk kesalahan ini adalah ketika Anda secara tidak sengaja menukar (atau menggeser) dua kolom atau lebih dalam daftar PILIH:
ATAU jika hal di atas tidak menyelesaikan masalah Anda, bagaimana dengan membuat ALIAS di kolom seperti ini: (kueri tidak sama dengan milik Anda tetapi intinya di sini adalah cara menambahkan alias di kolom.)
sumber
Biasanya Anda harus memiliki jumlah kolom yang sama saat Anda menggunakan operator berbasis himpunan sehingga jawaban Kangkan benar.
SAS SQL memiliki operator khusus untuk menangani skenario itu:
Untuk:
U-SQL mendukung konsep serupa:
Dan kode:
EDIT:
Konsep serikat luar didukung oleh KQL :
Contoh:
Keluaran:
demo
sumber
Jika hanya 1 baris, Anda dapat menggunakan join
sumber