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.
Database
,
Pemrograman
,
SQL Server
Sekedar memberitahu bahwa template websitenya blm responsive ditampilkan di mobile. Trims, smg bsbs dipahami..
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapus