Lebih
Cara terbaik untuk melakukan nested case pernyataan logika dalam SQL Server
I'm menulis Query SQL, di mana beberapa kolom yang dikembalikan harus dihitung tergantung pada banyak kondisi.
I'm saat ini menggunakan nested laporan kasus, tapi semakin berantakan. Apakah ada yang lebih baik (lebih terorganisir dan/atau dibaca) cara?
(Saya menggunakan Microsoft SQL Server, 2005)
Contoh sederhana:
SELECT
col1,
col2,
col3,
CASE
WHEN condition
THEN
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation1
ELSE calculation2
END
ELSE
CASE
WHEN condition2
THEN calculation3
ELSE calculation4
END
END
ELSE
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation5
ELSE calculation6
END
ELSE
CASE
WHEN condition2
THEN calculation7
ELSE calculation8
END
END
END AS 'calculatedcol1',
col4,
col5 -- etc
FROM table
169
9
Anda bisa mencoba beberapa jenis MENYATU trik, misalnya:
Bungkus semua kasus-kasus tersebut menjadi satu.
Anda dapat menggabungkan beberapa kondisi untuk menghindari situasi:
Saya pribadi melakukannya dengan cara ini, menjaga tertanam KASUS ekspresi yang terbatas. I'd juga menempatkan komentar di untuk menjelaskan apa yang sedang terjadi. Jika hal ini terlalu kompleks, memecah itu ke dalam fungsi.
Berikut ini's solusi sederhana untuk bersarang "Kompleks" kasus pernyataan: --Bersarang Kasus Kompleks Ekspresi
Hanya pastikan anda memiliki akhir pernyataan untuk setiap pernyataan case
user-defined function dapat server yang lebih baik, setidaknya untuk menyembunyikan logika - esp. jika anda perlu untuk melakukan hal ini di lebih dari satu query
Kita dapat menggabungkan beberapa kondisi bersama-sama untuk mengurangi beban kinerja.
Biarkan ada tiga variabel a b c di mana kita ingin melakukan kasus. Kita dapat melakukan ini sebagai berikut:
Aku pergi melalui ini dan menemukan semua jawaban yang super keren, namun ingin menambah jawaban yang diberikan oleh @deejers
anda dapat membuat yang LAIN opsional karena tidak wajib, hal ini sangat membantu dalam banyak skenario.
Contoh ini mungkin bisa membantu anda, gambar yang menunjukkan bagaimana SQL pernyataan case akan terlihat seperti ketika ada jika dan lebih dari satu batin jika loop