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 OFFIsi 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
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 idbulanJalankan 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.