Hola de nuevo tumbero_x:
En mi post pasado escribía esto:
Cita: No me queda claro cómo es que necesitas presentar la información... creo que sería conveniente en primer lugar que nos digas cuál es la estructura de tu tabla, que nos pongas algunos datos de ejemplo y que nos digas exactamente qué es lo que pretendes obtener como salida..
Pero veo que no seguiste mi consejo... hablas de un campo compra_cod_prov, pero no nos dices ni de qué tipo es, ni que información almacena ni nada por el estilo... los datos brillan por su ausencia y tampoco te molestaste en mostrarnos cuál es el resultado de la ejecución de la consulta que pusiste... así es muy difícil tratar de ayudarte. En realidad resultaría más útil que hubieras puesto esta información que la consulta que hiciste... de esta manera podríamos plantear una solución diferente a la que estás tratando de hacer.
Finalmente, y a modo de aprendizaje, la sentencia CASE-WHEN tiene dos formas de utilizarse... en tu caso en realidad estás haciendo 12 comparaciones, una por cada mes, pero podrías hacer una sola comparación, checa este script:
Código MySQL:
Ver original+------------+------+
| fecha | mes |
+------------+------+
| 2012-01-01 | ene |
| 2012-02-01 | feb |
| 2012-03-01 | mar |
| 2012-04-01 | abr |
| 2012-05-01 | may |
| 2012-06-01 | jun |
| 2012-07-01 | jul |
| 2012-08-01 | ago |
| 2012-09-01 | sep |
| 2012-11-01 | nov |
| 2012-12-01 | dic |
+------------+------+
12 rows
in set (0.00 sec
)
+------------+------+
| fecha | mes |
+------------+------+
| 2012-01-01 | ene |
| 2012-02-01 | feb |
| 2012-03-01 | mar |
| 2012-04-01 | abr |
| 2012-05-01 | may |
| 2012-06-01 | jun |
| 2012-07-01 | jul |
| 2012-08-01 | ago |
| 2012-09-01 | sep |
| 2012-11-01 | nov |
| 2012-12-01 | dic |
+------------+------+
12 rows
in set (0.00 sec
)
La primer consulta es tal y como la estás manejando, que en términos de programación se comporta como un IF anidado. En la segunda consulta sólo se compara una vez, y en términos de programación se comporta como un SWITCH.
Saludos
Leo.