2011-10-13 37 views
0

表           返回其他列名(爲nvarchar(256)),工資(十進制(18,2))查詢一些條件

現在,我想結果用額外的柱
'等級'=
        'A',如果薪水< 15000.00,
        'B' 如果25000.00>薪水> 15000.00,
        'C',如果工資> 25000.00

我怎麼能寫這樣的查詢?

回答

3
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 
+0

是否可以用'IF'而不是'CASE'做同樣的事情? – dotNETbeginner

+0

我已經添加了'IF'查詢到我的答案,但我不知道它是否會工作。通常'CASE'優先於IF' –

+0

IIF不工作.. – dotNETbeginner

2

'等級'= '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; 
+0

確切的結果對我來說並不重要,但要做到這一點.. spec可以稍後解決.. :) +1爲不同的方法.. – dotNETbeginner