php SQL:根据条件,根据不同的字段选择AND组结果

时间:2014-05-01 18:21:30

标签: php sql group-by case

我正在创建一个表格来显示许多不同项目的摘要,其中一些是按国家/地区划分的,有些是按地区划分的(一个国家/地区有多个地区),但只有2个国家/地区有多个地区(其中ADMIN0ID = 23)或24)...所以在这些情况下,我需要根据ADMIN1选择和分组结果。源表的层次结构是ADMIN0ID,ADMIN0,ADMIN1ID,ADMIN1,ADMIN2ID,ADMIN2,其中以“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)

请帮助我!

2 个答案:

答案 0 :(得分:2)

这是您想要的查询吗?

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);

如果是这样,主要问题是end声明中缺少case

答案 1 :(得分:1)

我猜你有一些关于“未知列”的错误。在将来,当您提出问题时,具体说明您获得的任何错误或错误的查询结果以及这与您期望的结果有何不同将会有所帮助。

我在您的查询中至少看到了这个问题:

零(0)与大写字母'O'不同。你在一个你应该有0的地方使用'O'。

... CASE WHEN (ADMINOID=24 OR ADMIN0ID=23 ...
                    ^              ^
                    O              0