Selasa, 10 Oktober 2017

Fungsi Case When pada SQL Server

Tidak ada komentar:
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 SELECT idbulan FROM bulan untuk melihat isi tabel
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.
, ,

Tidak ada komentar:

Posting Komentar