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