2010-08-16 84 views
3

由于(Department_Code,Course_Code)行,以下查询给出错误“#1241 - 操作数应包含1列”。当我用(Course_Code)代替它时,它可以工作。然而,这不是我想要的GROUP BY CASE的问题

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 

我怎么能按Department_Code,当条件(2)满意是Course_Code?

回答

5

A 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