SQL'CASE'子句--列名自己命名为CASE。

问题描述 投票:0回答:1

我试图从表'EXAMPLE_1'中SELECT多列,并对其中一列调用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表达式之前,我是否必须在SELECT中加入 "Bundesland "列?

sql database case firebird clause
1个回答
1
投票

列名是由服务器分配的,因为你没有明确地给派生的列一个名字。如果你想让列名显示为 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;

2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.