2016-10-01 49 views
-3

任何機構可以告訴我爲什麼這個代碼不工作,我得到的所有employeegrade爲0簡單的代碼,SQL

select Fname,lname, salary, salary =( 
    case when salary>0 and salary <5000 then 1 
    when SALARY>5000 and salary <7000 then 2 
    else 3 end) 
employeegrade from employee; 
+0

做一個[sqlfiddle](http://sqlfiddle.com/) –

+2

爲什麼'薪水='在case'表達的'開始和'employeegrade'後'情況下'? – Wanderer

+0

@Ullas:我認爲''employeegrade'是表達的別名。 –

回答

1

如果你使用SQL服務器,則在執行給定查詢出現以下錯誤。 「附近'員工等級'的語法不正確。」 原因是你試圖將計算結果分配給兩個不同的列名稱,即。工資和員工等級。

如果要計算員工等級,可以使用下面的查詢。

select Fname,lname, salary, employeegrade =( 
     case when salary>0 and salary <5000 then 1 
     when SALARY>5000 and salary <7000 then 2 
      else 3 end) 
    from employee; 

OR

select Fname,lname, salary, 
     case when salary>0 and salary <5000 then 1 
     when SALARY>5000 and salary <7000 then 2 
      else 3 end as employeegrade 
    from employee; 
1

試試下面的代碼

select Fname,lname, salary, 
(case when salary>0 and salary <5000 then 1 when salary >5000 and salary <7000 then 2 else 3 end) as employeegrade from employee; 
+0

你必須解釋什麼是不同於OP查詢。 – Wanderer

+0

感謝它的工作 –

+0

@samsam謝謝你的答覆,但我仍然沒有得到這個答案的觀點。我不知道原因。你知道這個 –

0

嘗試刪除salary =這被解釋作爲比較運算符,所以0就是結果。

+0

什麼東西,它的作品謝謝你Ullas和JYoThI –

0

試試這個

select Fname,lname, salary, 
case when salary > 0 and salary < 5000 then 1 
when SALARY > 5000 and salary < 7000 then 2 
else 3 end as employeegrade 
from employee; 
+0

你的'case'表達式的錯誤。發帖前請妥善檢查 – Wanderer

+0

您能否通知我這是哪裏? @Ullas – JYoThI

+0

'CASE'後面不需要'工資'。因爲無論如何,你正在使用'工資'條件。 – Wanderer