2010-08-16 2 views
3

Следующий запрос дает ошибку «# 1241 - Операнд должен содержать 1 столбец» из-за строки (Department_Code, Course_Code). Когда я заменяю это просто (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, Course_Code, когда условие (2) выполнено?

ответ

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