我可以根据SELECT CASE选择多个列吗?

时间:2010-06-29 14:50:56

标签: sql sybase

根据下面的SELECT CASE,我想在一个WHEN中显示两个单独的列。这可能吗?

下面两条注释掉的内容就像我想要的那样。我确信这是我想念的非常简单的事情。实际上,存在语法错误。

select 
    person.FirstName,
    person.LastName,
    CASE 
        --WHEN substatus is not null then 'HasSubstatus', null
        --else null, 'DoesNotHaveSubstatus'
        WHEN substatus is not null then 'HasSubstatus'
        else null
    end
from Person person

3 个答案:

答案 0 :(得分:4)

您无法在单个Case表达式中执行此操作,因为Case表达式返回单个值。您必须使用两个Case表达式。

Select  person.FirstName
    , person.LastName
    , Case When substatus is not null Then 'HasSubstatus' End As [HasSubstatus]
    , Case When substatus is null Then 'DoesNotHaveSubstatus' End As [DoesNotHaveSubstatus]
From Person person

答案 1 :(得分:1)

你做不到。

如果您想要将相同的条件逻辑应用于2列,或者将其作为单独的查询,如果您的意思是在一种情况下它应该返回两列而在另一种情况下,则需要重复case语句一栏。

答案 2 :(得分:-1)

您可以使用if()isnull()执行此操作(此语法仅适用于mySql

select 
    person.FirstName,
    person.LastName,
    IF( ISNULL(substatus),'HasSubstatus', null ) AS DoesHave,
    IF( ISNULL(substatus),null,'DoesNotHaveSubstatus'  ) AS DoesNotHave,
from Person person