SQL Server-在CASE语句中使用小于符号的麻烦

时间:2014-04-30 20:02:36

标签: sql sql-server

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;

我正在尝试使这个案例语句工作,但在&lt;上继续得到错误的语法错误符号。薪水的数据类型是数字。我的问题是什么?

4 个答案:

答案 0 :(得分:4)

看起来你正在结合语法。您可以删除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()表达式的正确语法。

答案 1 :(得分: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;

答案 2 :(得分:1)

您有两列名为Salary。你需要把&#34; Salary =&#34;在列表达式前面或使用&#34; AS&#34;最后(不是两个,你在这里有相互矛盾的名字)。此外,在案例发生后,我认为您不需要第一个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;

答案 3 :(得分: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语法,可能与其他方言略有不同。