Saya dapat menggunakan pernyataan CASE dalam kondisi JOIN?
Gambar berikut ini adalah bagian dari Microsoft SQL Server 2008 R2 Pandangan Sistem. Dari gambar dapat kita lihat bahwa hubungan antara sys.partisi
dan sys.allocation_units
tergantung pada nilai sys.allocation_units.jenis
. Jadi untuk bergabung dengan mereka bersama-sama aku akan menulis sesuatu yang mirip dengan ini:
SELECT *
FROM sys.indexes i
JOIN sys.partitions p
ON i.index_id = p.index_id
JOIN sys.allocation_units a
ON CASE
WHEN a.type IN (1, 3)
THEN a.container_id = p.hobt_id
WHEN a.type IN (2)
THEN a.container_id = p.partition_id
END
Tapi atas kode kesalahan sintaks. Saya kira bahwa's karena KASUS
pernyataan.
Ada yang bisa membantu untuk menjelaskan sedikit?
Tambahkan pesan kesalahan:
Msg 102, 15 Tingkat, Negara bagian 1, Baris 6 Salah sintaks dekat '='.
118
8
KASUS
ekspresi mengembalikan nilai dariKEMUDIAN
bagian dari klausa. Anda bisa menggunakannya thusly:Perhatikan bahwa anda perlu melakukan sesuatu dengan nilai yang dikembalikan, misalnya membandingkannya dengan 1. Pernyataan anda berusaha untuk mengembalikan nilai tugas atau ujian kesetaraan, baik yang masuk akal dalam konteks
KASUS
/KEMUDIAN
klausa. (JikaBOOLEAN
adalah datatype kemudian tes untuk kesetaraan akan masuk akal.)Saya sarankan anda untuk pergi melalui link ini Bersyarat Bergabung di SQL Server dan https://stackoverflow.com/questions/8361183/t-sql-case-statement-in-a-join-on-clause
misalnya
Edit: Sebagai per komentar.
Coba ini:
Saya pikir anda perlu dua laporan kasus:
Hal ini karena:
Hal ini tampaknya bagus
https://bytes.com/topic/sql-server/answers/881862-joining-different-tables-based-condition
Saya ambil contoh anda dan mengeditnya:
Mengambil DonkeyKong's contoh.
Masalah yang saya butuhkan untuk menggunakan variabel dinyatakan. Hal ini memungkinkan untuk menyatakan kiri dan sisi kanan dari apa yang anda butuhkan untuk membandingkan. Ini adalah untuk mendukung SSRS report di mana bidang yang berbeda harus dihubungkan berdasarkan pemilihan oleh pengguna.
Awal kasus ini menetapkan bidang pilihan berdasarkan pilihan dan kemudian saya dapat mengatur bidang saya perlu pertandingan untuk bergabung.
Kasus kedua pernyataan yang bisa ditambahkan untuk sisi kanan jika variabel ini diperlukan untuk memilih dari berbagai bidang
Di sini saya telah membandingkan perbedaan dua hasil yang berbeda set. Harapan ini mungkin bisa membantu.