2014-04-30 27 views
-2
Select FirstName, LastName, Salary, Salary = (Case Employees.Salary 
When salary < 40000 then 'Low Pay' 
When salary < 70000 then 'Medium Pay' 
Else 'High Pay' 
End) as 'PayRange' 
From Employees; 

我試圖使這種情況下的語句工作,但不斷得到<符號不正確的語法錯誤。薪水的數據類型是數字。我的問題是什麼?SQL Server-在CASE語句中使用少於符號的問題

回答

3

它看起來像你在組合語法。你可以刪除Employees.Salary,它會工作。

例,應該工作:

Select FirstName, LastName, Salary, (Case 
When salary < 40000 then 'Low Pay' 
When salary < 70000 then 'Medium Pay' 
Else 'High Pay' 
End) as 'PayRange' 
From Employees; 

Here是看到正確的語法CASE()表達式的鏈接。

+2

您只能執行第一個操作(顯示內容)。第二個選項(WHEN <40000 ...)將導致錯誤。 –

+0

很高興知道!將改變我的答案。 –

2
Select 
    FirstName, 
    LastName, 
    Salary, 
    (Case 
     When Salary < 40000 then 'Low Pay' 
     When Salary < 70000 then 'Medium Pay' 
     Else 'High Pay' 
    End) as 'PayRange' 
From Employees; 
1

您有兩列Salary。您需要將「Salary =」放在列表達式的前面,或者在末尾使用「AS」(不是兩者都有,並且您在這裏有衝突的名稱)。另外,我認爲在案例之後你不需要第一個Employees.Salary。這裏是我的建議:

Select FirstName 
, LastName 
, Salary 
, PayRange = (Case 
     When Employees.Salary < 40000 then 'Low Pay' 
     When Employees.Salary < 70000 then 'Medium Pay' 
     Else 'High Pay' 
     End) 
From Employees; 
0

你可以做到這一點更容易:

Select FirstName, LastName, Salary, 
CASE WHEN salary < 40000 THEN 'Low Pay' 
WHEN salary < 70000 THEN 'Medium Pay' 
ELSE 'High Pay' END AS PayRange 
FROM Employees; 

這是MS SQL Server的語法,可能是其他方言有點不同。