代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

我可以根据所选案例选择多个列吗?

  •  4
  • VoodooChild  · 技术社区  · 14 年前

    基于下面选择的案例,我想显示 在一个时间内分离列。这有可能吗?

    下面两行注释掉的内容和我想要的差不多。我确信这是我所缺少的非常简单的东西。实际上,有一个语法错误。

    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 回复  |  直到 11 年前
        1
  •  4
  •   Thomas    14 年前

    不能在单个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
  •  1
  •   Martin Smith    14 年前

    你不能。

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

        3
  •  -1
  •   Gabriele Petrioli    14 年前

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