我正在创建一个表来显示许多不同项目的摘要,其中一些是按国家/地区的,另一些是按地区的(一个国家有多个地区(,但只有两个国家/地区有多个区域(其中ADMIN0ID=23或24(。。。因此,在这些情况下,我需要基于ADMIN1来选择和分组结果。源表的层次结构是ADMIN0ID、ADMIN0、ADMIN1ID、ADMIN1、ADMIN2ID、ADMIN 2,其中以"ID"结尾的任何内容都是数字,但不带"ID"的相应字段是文本。以下是我在没有任何摘要数据的情况下获取项目名称的初步尝试:
SELECT
(CASE WHEN (ADMINOID=24 OR ADMIN0ID=23) THEN ADMIN1 ELSE ADMIN0) AS Project
FROM GTMP_PROGRESS
GROUP BY
(CASE WHEN (ADMIN0ID=24 OR ADMIN0ID=23) THEN ADMIN 1 ELSE ADMIN0)
请帮帮我!
这是您想要的查询吗?
SELECT (CASE WHEN ADMIN0ID in (23, 24) THEN ADMIN1 ELSE ADMIN0 END) AS Project
FROM GTMP_PROGRESS
GROUP BY (CASE WHEN ADMIN0ID in (23, 24) THEN ADMIN1 ELSE ADMIN0 END);
如果是这样的话,主要问题是case
语句中缺少end
。
我猜您在"未知列"或其他方面遇到了一些错误。将来,当你问一个问题时,具体说明你得到的任何错误或错误的查询结果,以及这与你期望得到的结果有何不同,会很有帮助。
我在你的查询中至少看到了这个问题:
零(0(与大写字母"O"不同。你在一个应该有0的地方使用了"O"。
... CASE WHEN (ADMINOID=24 OR ADMIN0ID=23 ...
^ ^
O 0