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
我正在尝试 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