由于(Department_Code,Course_Code)行,以下查询给出错误“#1241 - 操作数应包含1列”。当我用just(Course_Code)替换它时,它可以工作。然而,这不是我想要的
SELECT * FROM Classes
GROUP BY CASE
WHEN (1) THEN
Department_Code
ELSE CASE WHEN (2) THEN
(Department_Code, Course_Code)
ELSE Class_ID
END
END
如果满足条件(2),我如何按Department_Code,Course_Code进行分组?
答案 0 :(得分:5)
case
表达式只能返回单个值,因此您需要两个case
表达式。此外,为每个表达式使用单个case
表达式,而不是将两个嵌套在彼此内部:
SELECT * FROM Classes
GROUP BY
CASE
WHEN (1) THEN
Department_Code
WHEN (2) THEN
Department_Code
ELSE
Class_ID
END,
CASE
WHEN (2) THEN
Course_Code
ELSE
1
END
答案 1 :(得分:0)
遇到相同的问题,但是找到了一种更简单的方法,该方法是构造一个可以在GROUP BY中引用的帮助程序字段。 或者,您也可以执行相同的条件技巧,只要将字段合并即可将其放置在GROUP BY中。
SELECT *,
If( 'whatever field to check' = 2 , CONCAT(Department_Code,Course_Code), Course_Code) AS 'group1'
FROM Classes
GROUP BY group1