表 返回其他列名(爲nvarchar(256)),工資(十進制(18,2))查詢一些條件
現在,我想結果用額外的柱
'等級'=
'A',如果薪水< 15000.00,
'B' 如果25000.00>薪水> 15000.00,
'C',如果工資> 25000.00
我怎麼能寫這樣的查詢?
表 返回其他列名(爲nvarchar(256)),工資(十進制(18,2))查詢一些條件
現在,我想結果用額外的柱
'等級'=
'A',如果薪水< 15000.00,
'B' 如果25000.00>薪水> 15000.00,
'C',如果工資> 25000.00
我怎麼能寫這樣的查詢?
SELECT name,
salary,
(CASE
WHEN salary<15000 THEN 'A'
WHEN salary>15000 AND salary <25000 THEN 'B'
ELSE 'C'
END) AS grade
FROM employee
沒有嘗試以下,但它可能工作過:
SELECT name,
salary,
IIF (salary<15000, 'A', IIF (salary>15000 AND salary<25000, 'B', IIF (salary>25000, 'C',))) AS grade
FROM employee
IIF引入T-SQL與迪納利,所以最新只能與迪納利版本一起 請檢查該T-SQL IIF function tutorial
'等級'= 'A',如果薪水< 15000.00, 'B',如果25000.00>薪水> 15000.00, 'C'如果工資> 25000.00
該規範似乎有缺陷。你需要回到你的設計師那裏,詢問哪些職位適用於員工薪水正好是15000.00和25000.00的員工,因爲這些職位沒有詳細說明。下面是一個猜測(我不推薦在實踐中猜測):
SELECT name, salary, 'A' AS Grade
FROM Employee
WHERE Salary BETWEEN 0 AND 14999.99
UNION
SELECT name, salary, 'B' AS Grade
FROM Employee
WHERE Salary BETWEEN 15000.00 AND 24999.99
UNION
SELECT name, salary, 'C' AS Grade
FROM Employee
WHERE Salary >= 25000.00;
確切的結果對我來說並不重要,但要做到這一點.. spec可以稍後解決.. :) +1爲不同的方法.. – dotNETbeginner
是否可以用'IF'而不是'CASE'做同樣的事情? – dotNETbeginner
我已經添加了'IF'查詢到我的答案,但我不知道它是否會工作。通常'CASE'優先於IF' –
IIF不工作.. – dotNETbeginner