Saya pikir ini bisa membantu Anda.
Menggunakan SELECT
pernyataan dengan CASE
ekspresi sederhana
Dalam sebuah SELECT
pernyataan, CASE
ekspresi sederhana hanya memungkinkan pemeriksaan kesetaraan; tidak ada perbandingan yang dibuat. Contoh berikut menggunakan CASE
ekspresi untuk mengubah tampilan kategori lini produk agar lebih dimengerti.
USE AdventureWorks2012;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
Menggunakan SELECT
pernyataan dengan CASE
ekspresi yang dicari
Di dalam SELECT
pernyataan, CASE
ekspresi yang dicari memungkinkan nilai diganti di set hasil berdasarkan pada nilai perbandingan. Contoh berikut menampilkan harga daftar sebagai komentar teks berdasarkan kisaran harga untuk suatu produk.
USE AdventureWorks2012;
GO
SELECT ProductNumber, Name, "Price Range" =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;
GO
Menggunakan CASE
dalam ORDER BY
klausa
Contoh-contoh berikut menggunakan CASE
ekspresi dalam ORDER BY
klausa untuk menentukan urutan pengurutan baris berdasarkan nilai kolom yang diberikan. Dalam contoh pertama, nilai di kolom SalariedFlag dari tabel HumanResources.Employee dievaluasi. Karyawan yang memiliki SalariedFlag set ke 1 dikembalikan secara berurutan oleh BusinessEntityID dengan urutan menurun. Karyawan yang memiliki SalariedFlag diatur ke 0 dikembalikan secara berurutan oleh BusinessEntityID dalam urutan menaik. Pada contoh kedua, set hasil diurutkan oleh kolom TerritoryName ketika kolom CountryRegionName sama dengan 'Amerika Serikat' dan oleh CountryRegionName untuk semua baris lainnya.
SELECT BusinessEntityID, SalariedFlag
FROM HumanResources.Employee
ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC
,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END;
GO
SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName
ELSE CountryRegionName END;
Menggunakan CASE
dalam sebuah UPDATE
pernyataan
Contoh berikut menggunakan CASE
ekspresi dalam UPDATE
pernyataan untuk menentukan nilai yang ditetapkan untuk kolom VacationHours untuk karyawan dengan SalariedFlag yang ditetapkan ke 0. Ketika mengurangkan 10 jam dari VacationHours menghasilkan nilai negatif, VacationHours meningkat 40 jam; jika tidak, VacationHours bertambah 20 jam. The OUTPUT
klausa digunakan untuk menampilkan sebelum dan sesudah nilai liburan.
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
Menggunakan CASE
dalam HAVING
klausa
Contoh berikut menggunakan CASE
ekspresi dalam HAVING
klausa untuk membatasi baris yang dikembalikan oleh SELECT
pernyataan. Pernyataan ini mengembalikan tarif per jam maksimum untuk setiap jabatan di tabel HumanResources.Employee. The HAVING
klausul membatasi judul untuk orang-orang yang dipegang oleh laki-laki dengan besar tingkat gaji maksimum dari 40 dolar atau wanita dengan lebih besar tingkat gaji maksimum dari 42 dolar.
USE AdventureWorks2012;
GO
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityID
GROUP BY JobTitle
HAVING (MAX(CASE WHEN Gender = 'M'
THEN ph1.Rate
ELSE NULL END) > 40.00
OR MAX(CASE WHEN Gender = 'F'
THEN ph1.Rate
ELSE NULL END) > 42.00)
ORDER BY MaximumRate DESC;
Untuk keterangan lebih lanjut tentang contoh ini, kunjungi sumbernya .
Kunjungi juga di sini dan di sini untuk beberapa contoh dengan detail luar biasa.