Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php SQL:根据不同的字段选择并分组结果,具体取决于条件_Php_Sql_Group By_Case - Fatal编程技术网

php SQL:根据不同的字段选择并分组结果,具体取决于条件

php SQL:根据不同的字段选择并分组结果,具体取决于条件,php,sql,group-by,case,Php,Sql,Group By,Case,我正在创建一个表格来显示许多不同项目的摘要,其中一些按国家列出,一些按地区列出(一个国家有多个地区),但只有两个国家有多个地区(其中ADMIN0ID=23或24)。。。因此,在这些情况下,我需要根据ADMIN1对结果进行选择和分组。源表的层次结构是ADMIN0ID、ADMIN0、ADMIN1ID、ADMIN1、ADMIN2ID、ADMIN2,其中以“ID”结尾的任何内容都是数字,但没有“ID”的对应字段是文本。下面是我在没有任何摘要数据的情况下获取项目名称的初步尝试: SELECT (CASE

我正在创建一个表格来显示许多不同项目的摘要,其中一些按国家列出,一些按地区列出(一个国家有多个地区),但只有两个国家有多个地区(其中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)

请帮帮我

我猜你在“未知列”之类的问题上出错了。将来,当你问一个问题时,详细说明你得到的任何错误或错误的查询结果,以及这与你期望得到的结果有什么不同,这将是很有帮助的

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

零(0)与大写字母“O”不同。您在一个应该有0的位置使用了“O”

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

这是您想要的查询吗

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

您的查询有什么问题?这是有效的:从GTMP_进度组中选择(case-WHEN(ADMIN0ID=23或ADMIN0=24)然后选择ADMIN1-ELSE-ADMIN0-end)作为项目(case-WHEN(ADMIN0ID=23或ADMIN0=24)然后选择ADMIN1-ELSE-ADMIN0-end);很好地抓住了
结尾
这件事!等待它只适用于ADMIN0ID=23的位置,但不适用于ADMIN0ID=24的数据…@beck777。这真的很奇怪,因为语句中的
对这两个值的处理是等价的。我的错误。我调整了查询,因为IN语句不起作用。但我认为这是因为“O”对“0”。对不起,再次感谢!!抢手货并不是说我没有把头撞在桌子上一两次。