2015-02-16 2 views
0

У меня есть следующий запрос:MySQL значение Изменения этикетки в выбери отчетливые и сосчитать

SELECT DISTINCT GRAD_ACAD, 
COUNT(GRAD_ACAD) AS subtotal 
FROM academicos 
WHERE CCN REGEXP 'I|D65' 
GROUP BY GRAD_ACAD 
ORDER BY GRAD_ACAD 

, результаты которого являются:

GRAD_ACAD subtotal 
DOC   11 
LIC   2 
MTR   3 

Что я хочу сделать, это изменить значение меток в следующий :

GRAD_ACAD  subtotal 
Doctorado  11 
Licenciatura  2 
Maestría   3 

Я попытался случай, когда, как это, но я не могу заставить его работать:

SELECT DISTINCT GRAD_ACAD CASE GRAD_ACAD WHEN 'DOC' THEN 'doctorado' ELSE(SELECT GRAD_ACAD) END AS GRAD_ACAD, 
COUNT(GRAD_ACAD) AS subtotal 
FROM academicos 
WHERE CCN REGEXP 'I|D65' 
GROUP BY GRAD_ACAD 
ORDER BY GRAD_ACAD 

Как я могу это исправить?

+3

DISTINCT здесь избыточен. – Strawberry

+0

вы должны указать фактическое состояние в КОГДА, а не только КОГДА 'DOC' – Maximus2012

ответ

1

Нет необходимости использовать DISTINCT здесь

SELECT CASE GRAD_ACAD WHEN 'DOC' THEN 'doctorado' 
       WHEN 'LIC' then 'Licenciatura' 
       WHEN 'MTR' then 'Maestria' 
       ELSE GRAD_ACAD end, 
COUNT(GRAD_ACAD) AS subtotal 
FROM academicos 
WHERE CCN REGEXP 'I|D65' 
GROUP BY 1 
ORDER BY 1; 

Обратите внимание, что я использовал group by 1 и order by 1, которые укажите первое выбранное поле вместо повторения случая в обоих предложениях.

2

case GRAD_ACAD when 'DOC' then 'Doctorado' when 'LIC' then 'Licenciatura' when 'MTR' then 'Maestria' else GRAD_ACAD end

вам необходимо поставить тот же пункт, как в вашем SELECT и вашей GROUP BY