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