首页 > 解决方案 > SQL 'CASE' 子句 - 列名称本身 CASE

问题描述

我正在尝试从我的表“EXAMPLE_1”中选择多个列,并在其中一个上调用 CASE 表达式。

执行时,它会按预期显示每一列,但我称之为 CASE 表达式的那一个的名称为“CASE”。

我该如何解决?我找不到任何导致这种情况的错别字。

SELECT
    NAME AS LAST_NAME,
    FIRST_NAME AS FIRST_NAME,
    BIRTH_DATE AS BIRTH_DATE,
    CASE UPPER(BUNDESLAND)
        WHEN 'BW' THEN 'Baden-Wuerttemberg'
        WHEN 'BY' THEN 'Bayern'
        WHEN 'BE' THEN 'Berlin'
        WHEN 'BB' THEN 'Brandenburg'
        WHEN 'HB' THEN 'Bremen'
        WHEN 'HH' THEN 'Hamburg'
        WHEN 'HE' THEN 'Hessen'
        WHEN 'MV' THEN 'Mecklenburg-Vorpommern'
        WHEN 'NI' THEN 'Niedersachsen'
        WHEN 'NW' THEN 'Nordrhein-Westfalen'
        WHEN 'RP' THEN 'Rheinland-Pflaz'
        WHEN 'SL' THEN 'Saarland'
        WHEN 'SN' THEN 'Sachsen'
        WHEN 'ST' THEN 'Sachsen-Anhalt'
        WHEN 'SH' THEN 'Schleswig-Holstein'
        WHEN 'TH' THEN 'Thüringen'

        ELSE ' '
    END

FROM EXAMPLE_1;

在调用 CASE 表达式之前,我是否必须将列“Bundesland”放入 SELECT 中?

标签: sqlcasefirebird

解决方案


如果我理解正确,你想要这个

SELECT
    NAME AS LAST_NAME,
    FIRST_NAME AS FIRST_NAME,
    BIRTH_DATE AS BIRTH_DATE,
    (CASE UPPER(BUNDESLAND)
        WHEN 'BW' THEN 'Baden-Wuerttemberg'
        WHEN 'BY' THEN 'Bayern'
        WHEN 'BE' THEN 'Berlin'
        WHEN 'BB' THEN 'Brandenburg'
        WHEN 'HB' THEN 'Bremen'
        WHEN 'HH' THEN 'Hamburg'
        WHEN 'HE' THEN 'Hessen'
        WHEN 'MV' THEN 'Mecklenburg-Vorpommern'
        WHEN 'NI' THEN 'Niedersachsen'
        WHEN 'NW' THEN 'Nordrhein-Westfalen'
        WHEN 'RP' THEN 'Rheinland-Pflaz'
        WHEN 'SL' THEN 'Saarland'
        WHEN 'SN' THEN 'Sachsen'
        WHEN 'ST' THEN 'Sachsen-Anhalt'
        WHEN 'SH' THEN 'Schleswig-Holstein'
        WHEN 'TH' THEN 'Thüringen'

        ELSE ' '
    END) AS Bundesland_Long

FROM EXAMPLE_1;

从而为您的案例陈述提供别名。我对它的命名与你原来的BUNDESLAND专栏不同,因为有些 RDBMS 不喜欢这个,而且我不知道你的 RDBMS


推荐阅读