Hola ednagiraldo2107;
La liga que te pone Jurena corresponde a cómo quedaría el CASE-WHEN para convertir el mes a su nombre en español, pero no responde a tu pregunta de por qué tu código tiene error.
El problema en tu código está en la coma que pones después del AS Mes, antes del FROM
Código:
select year(fecha) as annio,
(case month(fecha) when 1 then "enero" end) as
mes, from factura group by annio,mes;
Al poner una coma estás indicando que se va a agregar un elemento a tu select, bórrala y no deberás tener problemas.
En cuanto a la solución que te pone Jurena, como verás es diferente la forma en que utiliza el CASE-WHEN. Aquí te dejo las comparación entre las dos alternativas:
Código MySQL:
Ver original -> ('2011-01-01'),('2011-02-01'),('2011-03-01'),('2011-04-01'),
-> ('2011-05-01'),('2011-06-01'),('2011-07-01'),('2011-08-01'),
-> ('2011-09-01'),('2011-10-01'),('2011-11-01'),('2011-12-01');
Query OK, 12 rows affected (0.08 sec)
+------------+
| fecha |
+------------+
| 2011-01-01 |
| 2011-02-01 |
| 2011-03-01 |
| 2011-04-01 |
| 2011-05-01 |
| 2011-06-01 |
| 2011-07-01 |
| 2011-08-01 |
| 2011-09-01 |
| 2011-10-01 |
| 2011-11-01 |
| 2011-12-01 |
+------------+
12 rows
in set (0.00 sec
)
+------------+
| MES |
+------------+
| enero |
| febrero |
| marzo |
| abril |
| mayo |
| junio |
| julio |
| agosto |
| septiembre |
| octubre |
| noviembre |
| diciembre |
+------------+
12 rows
in set (0.00 sec
)
+------------+
| MES |
+------------+
| enero |
| febrero |
| marzo |
| abril |
| mayo |
| junio |
| julio |
| agosto |
| septiembre |
| octubre |
| noviembre |
| diciembre |
+------------+
12 rows
in set (0.00 sec
)
La segunda opción (que es la que estás tratando de implementar) sólo necesita hacer una conversión MONTH, mientras que la primer opción hace la conversión en cada caso, Ambas dan exactamente el mismo resultado.
Saludos
Leo.