任何機構可以告訴我爲什麼這個代碼不工作,我得到的所有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;
任何機構可以告訴我爲什麼這個代碼不工作,我得到的所有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;
如果你使用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;
試試下面的代碼
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;
嘗試刪除salary =
這被解釋作爲比較運算符,所以0就是結果。
什麼東西,它的作品謝謝你Ullas和JYoThI –
做一個[sqlfiddle](http://sqlfiddle.com/) –
爲什麼'薪水='在case'表達的'開始和'employeegrade'後'情況下'? – Wanderer
@Ullas:我認爲''employeegrade'是表達的別名。 –