您已經的CASE
混合兩種格式,請嘗試:
SELECT o.operator_name,
o.salary,
CASE WHEN o.salary < 500 THEN o.salary * 1.35
WHEN o.salary >= 500 AND o.salary < 1000 THEN o.salary * 1.15
WHEN o.salary >= 1000 AND o.salary < 1500 THEN o.salary * 1.05
ELSE o.salary
END AS "Increase"
FROM operators o;
這種格式允許多個/不同的領域中使用,以及比較運營商。如果您想要返回薪水值1500以上的東西,您可能還需要END
之前的ELSE
。
另外值得一提的是,CASE
退出在第一次見面的標準,所以你可以使用:
SELECT o.operator_name,
o.salary,
CASE WHEN o.salary < 500 THEN o.salary * 1.35
WHEN o.salary < 1000 THEN o.salary * 1.15
WHEN o.salary < 1500 THEN o.salary * 1.05
ELSE o.salary
END AS "Increase"
FROM operators o;
的CASE
其他格式不會爲你的榜樣工作,但這裏有一個簡單的例子來說明使用:
SELECT CASE col1
WHEN 'cat' THEN 1
WHEN 'dog' THEN 2
END
FROM table1
這相當於:
SELECT CASE WHEN col1 = 'cat' THEN 1
WHEN col1 = 'dog' THEN 2
END
FROM table1
將'CASE o.salary WHEN ...'改爲'CASE WHEN ...' – Siyual 2014-11-14 20:53:29
您不需要'> ='測試。測試是按順序執行的,所以如果它是'<500',第一個'WHEN'將會匹配,並且它將永遠不會到達第二個。 – Barmar 2014-11-14 20:53:58