En mi opinión os estáis complicando mucho. Solucionarlo con subconsultas normalmente es bastante sencillo (claro que solo se puede hacer cuando el nº de columnas está prefijado de antemano).
Sería algo del tipo :
Código SQL
[-]
select mes
(select sum(unidades) from ventas where ventas.mes = meses.mes and producto = 'A') as ventas_A,
(select sum(unidades) from ventas where ventas.mes = meses.mes and producto = 'B') as ventas_B,
(select sum(unidades) from ventas where ventas.mes = meses.mes and producto = 'C') as ventas_C
from meses
Saludos.