Dandole vueltas al tema de extraer la ventas de cada mes del campo con la lista de valores separados por comas, se puede utilizar algo así:
Código SQL
[-]select cliente,
cast(substring_index(substring_index(resumen, ',', 1), ',', -1) AS DECIMAL(10,2)) as enero,
cast(substring_index(substring_index(resumen, ',', 2), ',', -1) AS DECIMAL(10,2)) as febrero,
cast(substring_index(substring_index(resumen, ',', 3), ',', -1) AS DECIMAL(10,2)) as marzo,
cast(substring_index(substring_index(resumen, ',', 4), ',', -1) AS DECIMAL(10,2)) as abril,
cast(substring_index(substring_index(resumen, ',', 5), ',', -1) AS DECIMAL(10,2)) as mayo,
cast(substring_index(substring_index(resumen, ',', 6), ',', -1) AS DECIMAL(10,2)) as junio,
cast(substring_index(substring_index(resumen, ',', 7), ',', -1) AS DECIMAL(10,2)) as julio,
cast(substring_index(substring_index(resumen, ',', 8), ',', -1) AS DECIMAL(10,2)) as agosto,
cast(substring_index(substring_index(resumen, ',', 9), ',', -1) AS DECIMAL(10,2)) as septiembre,
cast(substring_index(substring_index(resumen, ',', 10), ',', -1) AS DECIMAL(10,2)) as octubre,
cast(substring_index(substring_index(resumen, ',', 11), ',', -1) AS DECIMAL(10,2)) as noviembre,
cast(substring_index(substring_index(resumen, ',', 12), ',', -1) AS DECIMAL(10,2)) as diciembre
from (
-- mismo SQL anterior
SELECT cliente.cliente, GROUP_CONCAT(ifNull(ventas.importe, 0) ORDER BY mes.mes SEPARATOR '\,') as resumen
FROM
-- genera un registro para cada mes de cada cliente
((SELECT DISTINCT month(fecha) AS mes FROM compra) mes,
(SELECT DISTINCT cliente FROM compra) cliente)
-- rellena los importes del mes
LEFT JOIN (
SELECT cliente, month(fecha) AS mes, sum(importe) AS importe
FROM compra
WHERE year(fecha)=year(now()) AND cliente<>''
GROUP BY cliente, month(fecha)
) ventas ON ventas.cliente=cliente.cliente AND ventas.mes=mes.mes
GROUP BY cliente
--
) dat
y con esto ya si se tiene una tabla con cada venta de un determinado mes en su correspondiente columna del mes