Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2013, 15:53
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Query para crear un reporte detallado

Hola jandrogdz:

por qué no comienzas por decirnos cuál es la estructura de tus tablas y nos pones algunos datos de ejemplo... a partir de estos datos de ejemplo puedes también decirnos qué es lo que esperas obtener como salida, creo que de esta manera quedará más claro cual es tu problema...

en cuanto a tu consulta, tengo algunas observaciones que hacer, por ejemplo al ordenar por el campo "mes" en realidad estarías ordenando alfabéticamente, es decir abril y agostro estarían antes que enero y febrero, es correcto esto?

Segundo, la forma en que estás usando el CASE-WHEN no es del todo óptima, ya que en cada caso estás haciendo 12 conversiones... te recuerdo que el CASE-WHEN tiene dos formas de hacer las comparaciones,

http://dev.mysql.com/doc/refman/5.0/...statement.html

Te recomiendo que lo hagas así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM meses;
  2. +---------+
  3. | num_mes |
  4. +---------+
  5. |       1 |
  6. |       2 |
  7. |       8 |
  8. |      12 |
  9. +---------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT num_mes,
  13.     ->   CASE num_mes WHEN 1 THEN 'Enero'
  14.     ->        WHEN 2 THEN 'Febrero'
  15.     ->        WHEN 3 THEN 'Marzo'
  16.     ->        WHEN 4 THEN 'Abril'
  17.     ->        WHEN 8 THEN 'Agosto'
  18.     ->        WHEN 12 THEN 'Diciembre'
  19.     ->   END mes
  20.     -> FROM meses;
  21. +---------+-----------+
  22. | num_mes | mes       |
  23. +---------+-----------+
  24. |       1 | Enero     |
  25. |       2 | Febrero   |
  26. |       8 | Agosto    |
  27. |      12 | Diciembre |
  28. +---------+-----------+
  29. 4 rows in set (0.00 sec)

Observa que no hay necesidad de poner en cada caso la comparacion

Código:
MONTH( f.fecha ) = 2
Saludos
Leo.