Oi Vini,
Podemos sumir com esse UNION, conforme a consulta abaixo… O resto, se eu entendi bem o que você está querendo, é só usar um group by.
SELECT F.NOME,
FUN.NOME,
SUM(DECODE(FIN.MESCOMP,'01',FIN.VALOR,0)),
SUM(DECODE(FIN.MESCOMP,'02',FIN.VALOR,0))
FROM PFUNC F
JOIN PFPERFF PER
ON F.CODCOLIGADA = PER.CODCOLIGADA
AND F.CHAPA = PER.CHAPA
JOIN PFFINANC FIN
ON F.CODCOLIGADA = FIN.CODCOLIGADA
AND F.CHAPA = FIN.CHAPA
AND PER.MESCOMP = FIN.MESCOMP
AND PER.ANOCOMP = FIN.ANOCOMP
AND PER.NROPERIODO = FIN.NROPERIODO
AND FIN.CODEVENTO IN('0730')
AND FIN.MESCOMP IN ('01','02')
JOIN PFUNCAO FUN
ON F.CODFUNCAO = FUN.CODIGO
AND F.CODCOLIGADA = FUN.CODCOLIGADA
WHERE F.CODCOLIGADA = '547'
AND PER.ANOCOMP = '2011'
AND PER.NROPERIODO = '2'
GROUP BY F.NOME, FUN.NOME;
Se o código ainda não estiver 100%, pelo menos você já tem um ponto de partida…
Abraços