Penggunaan CASE WHEN Pada SQL Server

Posted On // Leave a Comment
Judul sebelumnya dari artikel ini adalah Case expressions may only be nested to level 10 SQL Error, error ini terjadi karena penggunaan case yang lebih dari 10. Untuk mempermudah pencarian, saya ganti title nya :P.


CASE WHEN SUBSTRING(PERIODE,5,2) = 01 THEN 'JAN-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 02 THEN 'FEB-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 03 THEN 'MAR-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 04 THEN 'APR-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 05 THEN 'MEI-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 06 THEN 'JUN-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 07 THEN 'JUL-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 08 THEN 'AUG-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 09 THEN 'SEP-' + @TAHUN
ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 10 THEN 'OCT-' + @TAHUN
-- ELSE CASE WHEN SUBSTRING(PERIODE,5,2) = 11 THEN 'NOV-' + @TAHUN
ELSE 'DEC-' + @TAHUN
END END END END END END END END END END

ELSE 'DEC-' + @TAHUN
END

Saat saya meggunakan script di atas, maka muncul pesan error "Case expressions may only be nested to level 10" karena maksimum untuk syntax nested "Case" adalah 10 level.

Ternyata syntax yang benar adalah sebagai berikut:

CASE WHEN SUBSTRING(PERIODE,5,2) = 01 THEN 'JAN-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 02 THEN 'FEB-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 03 THEN 'MAR-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 04 THEN 'APR-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 05 THEN 'MEI-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 06 THEN 'JUN-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 07 THEN 'JUL-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 08 THEN 'AUG-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 09 THEN 'SEP-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 10 THEN 'OCT-' + @TAHUN
WHEN SUBSTRING(PERIODE,5,2) = 11 THEN 'NOV-' + @TAHUN
ELSE 'DEC-' + @TAHUN
END

perhatikan bawha pada script kedua, syntax ELSE CASE tidak di tulis

0 komentar: