GROUP BY CASE的麻烦

bgc*_*ode 4 mysql sql group-by case

由于(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
Run Code Online (Sandbox Code Playgroud)

当条件(2)满足时,如何按Department_Code,Course_Code进行分组?

Guf*_*ffa 6

一个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
Run Code Online (Sandbox Code Playgroud)