SQL 'CASE' 子句 - 列名命名自身 CASE

SQL 'CASE' Clause - Column Name Names Itself CASE

我正在尝试 SELECT 我的 table '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 中?

服务器正在分配列名,因为您没有明确地为派生列指定名称。如果您希望列名显示为 BUNDESLAND,则必须将其作为别名分配给 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 AS BUNDESLAND        --<---- Here.

FROM EXAMPLE_1;

如果我没理解错的话,你想要这个

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