Sql 分组讨论的问题
由于(部门代码、课程代码)行,以下查询给出错误“#1241-操作数应包含1列”。当我用(课程代码)替换它时,它就工作了。然而,这不是我想要的Sql 分组讨论的问题,sql,mysql,group-by,case,Sql,Mysql,Group By,Case,由于(部门代码、课程代码)行,以下查询给出错误“#1241-操作数应包含1列”。当我用(课程代码)替换它时,它就工作了。然而,这不是我想要的 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)满足时,如何按部门代码、课程代码分组?Ac
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)满足时,如何按部门代码、课程代码分组?A
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
有同样的问题,但找到了一种更简单的方法,即构造一个helper字段,然后可以在GROUP BY中引用该字段。
或者你也可以做同样的条件技巧,把它放在组中,只要你在字段中保持一致
SELECT *,
If( 'whatever field to check' = 2 , CONCAT(Department_Code,Course_Code), Course_Code) AS 'group1'
FROM Classes
GROUP BY group1