JNet99

Enjoy Saja Bro

Penggunaan Perintah CASE Dalam SQL

Penggunaan Perintah CASE Dalam SQL

mylovePerintah CASE sering digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan.

Kalau kita belajar bahasa pemrograman tentu kita kenal dengan perintah IF Condition, fungsinya CASE hampir sama. Bedanya perintah CASE digunakan untuk beberapa kondisi sekaligus, dan didalam SQL perintah CASE tidak bisa berdiri sendiri melainkan harus disisipkan dalam perintah SELECT. Jadi berbeda dengan perintah IF yang lebih bebas, akan tetapi perintah IF hanya berguna apabila dimasukan dalam STORE PROCEDURE, FUNCTION dan TRIGGER. Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE disisipkan dalam perintah SELECT jadi yang dihasilkan langsung berupa DATASET dan langsung bisa dilihat hasilnya.

Perintah CASE ini mempunyai dua format :

1. Simple Case function :

Maksudnya adalah perintah CASE sederhana.

Bentuk Sintaknya

CASE input_expression
WHEN when_expression THEN result_expression
[ …n ]
[
ELSE else_result_expression
]
END

2. Searched CASE function:

Maksudnya perintah CASE ini diikuti dengan syarat kondisi boolean, seperti >, <, >=, <= , dan lain-lain.

Sintaknya sebagai berikut.

CASE
WHEN Boolean_expression THEN result_expression
[ …n ]
[
ELSE else_result_expression
]
END

Saya akan memberikan contoh dari kedua jenis CASE tersebut agar dapat bisa membedakan, kapan saat kita memakai Simple Case dan kapan saat kita memakai Search Case.

Terlebih dahulu saya akan memberi contoh Simple Case,

Misalnya kita mempunyai lima kategori penilaian terhadap nilai ujian Mahasiswa.

A = Sangat Baik, B = ‘Baik’, C = ‘Cukup’, D = ‘Jelek’, E = ‘Sangat Jelek’

Dibawah ini ada tabel dasar berupa nilai ujian dari sejumlah Mahasiswa, kita namakan saja tb_nilai

No_induk Nilai
M1001 A
M1002 B
M1003 D
M1004 E
M1005 A
M1006 C
M1007 B
M1008 E
M1009 A
M1010 D

Dari data tersebut kita ingin mengkonversikan nilai-nilai tersebut dengan memakai perintah CASE sehingga menghasilkan barisan data dibawah ini.

No_induk Nilai Keterangan
M1001 A Sangat Baik
M1002 B Baik
M1003 D Jelek
M1004 E Sangat Jelek
M1005 A Sangat Baik
M1006 C Cukup
M1007 B Baik
M1008 E Sangat Jelek
M1009 A Sangat Baik
M1010 D Jelek

Untuk menghasilkan data diatas kita menggunakan skrip SQL sebagai berikut :

SELECT no_induk, nilai,
keterangan =
CASE nilai
WHEN ‘A’ THEN ‘Sangat Baik’
WHEN ‘B’ THEN ‘Baik’
WHEN ‘C’ THEN ‘Cukup’
WHEN ‘D’ THEN ‘Jelek’
ELSE ‘Sangat Jelek’
END
FROM
tb_nilai

Dari skrip SQL tersebut terlihat kita membentuk kolom keterangan yang mana isinya sesuai dengan kondisi CASE.

Berikutnya saya akan memberi contoh Search Case,

Anggaplah kita mempunyai kategori nilai

nilai > 8,5 dapat kategori ‘A’,

nilai >6,5 dan <=8,5 kategori ‘B’

nilai > 5,5 dan <= 6,5 kategori ‘C’

nilai >4,5 dan <= 5,5 kategori ‘D’

Nilai <= 4,5 kategori E.

Dan kita mempunyai tabel kita beri nama saja daftar_nilai dengan isi sebagai berikut

No_induk Nilai
M1001 9
M1002 8
M1003 6
M1004 4.5
M1005 3
M1006 5.5
M1007 8
M1008 7
M1009 6
M1010 6.5

Dan kita ingin menghasilkan suatu dataset yang bentuk tampilannya sebagai berikut :

No_induk Nilai Kategori
M1001 9 A
M1002 8 C
M1003 6 B
M1004 4.5 E
M1005 3 E
M1006 5.5 D
M1007 8 B
M1008 7 B
M1009 6 C
M1010 6.5 C

Maka Skrip yang akan harus ditulis sebagai berikut :

SELECT no_induk, nilai, kategori =
CASE
WHEN nilai > 8.5 THEN ‘A’
WHEN nilai > 6.5 THEN ‘B’
WHEN nilai > 5.5 THEN ‘C’
WHEN nilai > 4.5 THEN ‘D’
ELSE ‘E’
END
FROM daftar_nilai

Kedua contoh diatas merupakan contoh-contoh sederhana dan apabila sudah dipahami dapat dikembangkan lebih lanjut sesuai dengan kebutuhan situasi.

Mudah-mudahan dapat bermanfaat bagi yang suka bermain-main dengan SQL.

Selamat mencoba dan semoga Anda beruntung.

Artikel lainnya

Filed under: SQL, ,

12 Responses

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

delicious

%d blogger menyukai ini: