The following query gives the error \"#1241 - Operand should contain 1 column(s)\" because of the (Department_Code, Course_Code) line. When I replace that with just (Course
A case
expression can only return a single value, so you need two case
expressions. Also, use a single case
expression for each instead of nesting two inside each other:
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
Had the same problem but found a simpler way which was to construct a helper field that can then be referenced in the GROUP BY. Or you can do the same conditional trick placing it in the GROUP BY so long as you Concat the fields.
SELECT *,
If( 'whatever field to check' = 2 , CONCAT(Department_Code,Course_Code), Course_Code) AS 'group1'
FROM Classes
GROUP BY group1