CASE是SQL用來做為 if…then…else 之類的邏輯判斷的關鍵字。CASE的語法如下:
簡單的CASE函數:
SELECT CASE “欄位名"
WHEN “條件1″ THEN “結果1″
WHEN “條件2″ THEN “結果2″
….
[ELSE “結果N"]
END
例:
SELECT 類別,CASE 類別
WHEN ‘A’ THEN 單價*2
WHEN ‘B’ THEN 單價*1.5
ELSE 單價
END AS 售價
FROM 資料表
如果類別是A,則售價為單價*2,若類別是B,則售價為單價*1.5。
如果有比較複雜的判別式,可寫如下方式:
搜尋的CASE函數:
SELECT CASE
WHEN ‘布林值條件1’ THEN ‘結果1’
WHEN ‘布林值條件2’ THEN ‘結果2’
….
[ELSE ‘結果N’]
END
例1:
SELECT ProductNumber, Name, ‘Price Range’ =
CASE
WHEN ListPrice = 0 THEN ‘Mfg item – not for resale’
WHEN ListPrice = 50 and ListPrice = 250 and ListPrice < 1000 THEN ‘Under $1000’
ELSE ‘Over $1000’
END
FROM Production.Product
例2:為區分兩個類別(一般客戶及契約客戶),在某一日期區間內,每日的數量。一般客戶沒有客戶編號,一侓用99999999代表。
Select 日期,
Sum(Case When 客編 = ‘99999999’ Then 1 Else 0 End) AS 一般客戶 ,
Sum(Case When 客編 ‘99999999’ Then 1 Else 0 End) AS 契約客戶
From 資料表A
WHERE (日期 >= 980101 and 日期 <= 980131)
GROUP BY 日期 ORDER BY 日期