Fungsi Case When pada SQL Server


Untuk menguji suatu nilai field dalam sebuah query, kita bisa menggunakan fungsi Case When pada SQL Server. Sama halnya dengan fungsi If Then, hanya saja fungsi If Then tidak bisa digunakan atau disisipkan dalam baris query. Dalam SQL Server fungsi If Then hanya bisa menguji nilai masukkan, kemudian mengeksekusi perintah apa selanjutnya yang akan dilakukan, sedangkan fungsi Case When bisa disisipkan ke dalam sebuah query. Berikut ini adalah bentuk dari fungsi Case When.

SELECT field1,
CASE
WHEN [field1] = 1 THEN 'Hasil'
WHEN [field1] = 2 THEN 'Hasil'
WHEN ...
ELSE 'Hasil' END AS [alias]
FROM [table] ORDER BY [field]
Sebagai contoh saya ingin menentukan nilai dari sebuah field yang apabila nilai dari field tersebut adalah 1 maka hasilnya adalah Januari, jika 2 maka Februari dan seterusnya. Buatlah sebuah contoh tabel seperti dibawah ini

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[bulan](
[idbulan] [int] NOT NULL
CONSTRAINT [PK_bulan] PRIMARY KEY CLUSTERED(
[idbulan] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
Isi tabel dengan menggunakan perintah berikut

INSERT INTO [bulan] ([idbulan])VALUES(1)
INSERT INTO [bulan] ([idbulan])VALUES(2)
INSERT INTO [bulan] ([idbulan])VALUES(3)
INSERT INTO [bulan] ([idbulan])VALUES(4)
INSERT INTO [bulan] ([idbulan])VALUES(5)
INSERT INTO [bulan] ([idbulan])VALUES(6)
INSERT INTO [bulan] ([idbulan])VALUES(7)
INSERT INTO [bulan] ([idbulan])VALUES(8)
INSERT INTO [bulan] ([idbulan])VALUES(9)
INSERT INTO [bulan] ([idbulan])VALUES(10)
INSERT INTO [bulan] ([idbulan])VALUES(11)
INSERT INTO [bulan] ([idbulan])VALUES(12)
Gunakan perintah dibawah untuk melihat isi tabel

SELECT idbulan FROM bulan 



Sesuai dengan contoh yang saya bahas diatas bahwa saya ingin jika nilai field idbulan adalah 1 maka hasilnya adalah Januari, jika 2 maka hasilnya Februari dan seterusnya.

SELECT idbulan,
CASE
WHEN idbulan = 1 THEN 'Januari'
WHEN idbulan = 2 THEN 'Februari'
WHEN idbulan = 3 THEN 'Maret'
WHEN idbulan = 4 THEN 'April'
WHEN idbulan = 5 THEN 'Mei'
WHEN idbulan = 6 THEN 'Juni'
WHEN idbulan = 7 THEN 'Juli'
WHEN idbulan = 8 THEN 'Agustus'
WHEN idbulan = 9 THEN 'September'
WHEN idbulan = 10 THEN 'Oktober'
WHEN idbulan = 11 THEN 'Nopember'
ELSE 'Desember' END AS namabulan
FROM bulan ORDER BY idbulan
Jalankan perintah diatas, jika benar maka hasilnya seperti berikut




Penggunaan fungsi Case When tidak terbatas hanya pada satu parameter pengujian saja, bisa juga ditambah lebih dari satu parameter sebagai contoh

SELECT field1,
CASE
WHEN [field1] = 1 AND [field2] = 3 AND ... THEN 'Hasil'
ELSE 'Hasil' END AS [alias]
FROM [table] ORDER BY [field]
Pada query diatas parameter yang diuji lebih dari satu, sehingga hasil yang diinginkan bisa lebih relevan.

Artikel Terkait