Es que estás agrupando por meses también, y el resultado que quieres, de acuerdo a lo que dices es
SIN agrupamiento por mes.
Código SQL:
Ver originalSELECT
`re`.`retencion` `name`,
CONCAT_WS(', ',
IF(MONTH(a.fecha) = 1, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 2, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 3, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 4, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 5, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 6, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 7, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 8, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 9, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 10, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 11, SUM(ahr.cantidad), 0),
IF(MONTH(a.fecha) = 12, SUM(ahr.cantidad), 0)
) `data`
FROM
`actas` `a`
INNER JOIN `actas_has_retenciones` `ahr` ON `fk_actas_id` = `acta_id`
INNER JOIN `retenciones` `re` ON `retenciones_id` = `fk_retenciones_id`
WHERE YEAR(`a`.`fecha`) = YEAR(CURDATE())
GROUP BY `re`.`retencion`
ORDER BY `name` ASC;