Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/04/2016, 18:03
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sumar y agrupar por mes (Consulta)

El error está en la operación que se realiza. El SUM() en ese caso no está discriminando por el mes. Solo hace la suma sobre el total de registros cuando el mes es el buscado, pero lo hace sobre la tabla entera.
COmo el unico caso donde tienes datos de dos meses diferentes es ese producto, no notas que está haciendo lo mismo en todos los demás. Pero lo hace.

La solución debería pasar por cambiar el orden de las funciones:

Código MySQL:
Ver original
  1.     `re`.`retencion` `name`,
  2.     CONCAT_WS(', ',
  3.             SUM(IF(MONTH(a.fecha) = 1, ahr.cantidad, 0)),
  4.             SUM(IF(MONTH(a.fecha) = 2, ahr.cantidad, 0)),
  5.             SUM(IF(MONTH(a.fecha) = 3, ahr.cantidad, 0)),
  6.             SUM(IF(MONTH(a.fecha) = 4, ahr.cantidad, 0)),
  7.             SUM(IF(MONTH(a.fecha) = 5, ahr.cantidad, 0)),
  8.             SUM(IF(MONTH(a.fecha) = 6, ahr.cantidad, 0)),
  9.             SUM(IF(MONTH(a.fecha) = 7, ahr.cantidad, 0)),
  10.             SUM(IF(MONTH(a.fecha) = 8, ahr.cantidad, 0)),
  11.             SUM(IF(MONTH(a.fecha) = 9, ahr.cantidad, 0)),
  12.             SUM(IF(MONTH(a.fecha) = 10, ahr.cantidad, 0)),
  13.             SUM(IF(MONTH(a.fecha) = 11, ahr.cantidad, 0)),
  14.             SUM(IF(MONTH(a.fecha) = 12, ahr.cantidad, 0))) `data`
  15.     `actas` `a`
  16.         INNER JOIN
  17.     `actas_has_retenciones` `ahr` ON `fk_actas_id` = `acta_id`
  18.         INNER JOIN
  19.     `retenciones` `re` ON `retenciones_id` = `fk_retenciones_id`
  20.     YEAR(`a`.`fecha`) = YEAR(CURDATE())
  21. GROUP BY `re`.`retencion`
  22. ORDER BY `name` ASC;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)