Também dá pra resolver com case. Utilizando o exemplo do Dr. house :
SELECT COALESCE(c.nome,'Total') as Categoria,
COALESCE(s.nome,'Total') as SubCategoria ,
sum("valor") as Valores,
,sum(case when fl.mes = f.mes and fl.mes ilike 'janeiro' then valor else 0 end) as janeiro,
,sum(case when fl.mes = f.mes and fl.mes ilike 'fevereiro' then valor else 0 end) as fevereiro,
,sum(case when fl.mes = f.mes and fl.mes ilike 'marco' then valor else 0 end) as marco,
,sum(case when fl.mes = f.mes and fl.mes ilike 'abril' then valor else 0 end) as abril,
,sum(case when fl.mes = f.mes and fl.mes ilike 'maio' then valor else 0 end) as maio,
,sum(case when fl.mes = f.mes and fl.mes ilike 'junho' then valor else 0 end) as junho,
,sum(case when fl.mes = f.mes and fl.mes ilike 'julho' then valor else 0 end) as julho,
,sum(case when fl.mes = f.mes and fl.mes ilike 'agosto' then valor else 0 end) as agosto,
,sum(case when fl.mes = f.mes and fl.mes ilike 'setembro' then valor else 0 end) as setembro,
,sum(case when fl.mes = f.mes and fl.mes ilike 'outubro' then valor else 0 end) as outubro,
,sum(case when fl.mes = f.mes and fl.mes ilike 'novembro' then valor else 0 end) as novembro,
,sum(case when fl.mes = f.mes and fl.mes ilike 'dezembro' then valor else 0 end) as dezembro
FROM public."fluxo" f inner join "categoria" c on c.id_cat = f.id_cat
inner join "subcategoria" s on s.id_sub = f.id_sub
group by rollup (c.nome,s.nome)
order by
c.nome,
s.nome,