使用CASE在SQL中选择一个字段?

时间:2010-11-10 08:27:20

标签: sql

根据数据库中的一个字段是否等于某个字段,我想选择另一个字段的值。我以为我可以使用CASE THEN,但我不能让它返回字段的值。

这是我到目前为止所尝试的内容:

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo END FROM Employees

JobNo是我想从中获取值的字段的名称。

7 个答案:

答案 0 :(得分:13)

你错过了你的案例陈述中的else语句,一旦它在那里它应该起作用

像这样:

SELECT LastName, 
    CASE FirstName WHEN 'Ian' THEN JobNo ELSE -1 END
FROM Employees

答案 1 :(得分:2)

试试这个

SELECT LastName, CASE  WHEN FirstName ='Ian' THEN JobNo else null END
FROM Employees

答案 2 :(得分:2)

您需要定义ELSE:

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo ELSE FirstName END
FROM Employees

我已经默认返回FirstName,如果您不希望只替换其他内容。只要确保数据类型是等效的,以避免潜在的问题(我假设JobNo是一个varchar引用代码,用于演示语法)。

答案 3 :(得分:1)

添加ELSE条件不会有害,但您可能还需要新列的列名称,如下所示:

SELECT LastName, 
       CASE FirstName 
            WHEN 'Ian' THEN JobNo 
            ELSE 0
       END  IansJobNo
FROM Employees

答案 4 :(得分:0)

这是:

SELECT LastName, 
    JobNo = CASE 
        WHEN FirstName = 'Ian' THEN JobNo END
FROM Employees

答案 5 :(得分:0)

sql语法对我来说似乎是对的。我自己尝试过,工作正常。可能是你错过了别的东西。以下是我得到的示例输出, alt text

答案 6 :(得分:-1)

CASE @Temp WHEN 1那么ISnull(tbl1.t1,0)当2那么ISnull(tbl1.t2,0)结束为值