繁体   English   中英

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

[英]Can I select multiple columns depending on a SELECT CASE?

根据下面的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

您不能在单个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

你不能。

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

你可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM