Bien, supon esto:
Pones una Query que te devuelve como dices: mes, año e importe, algo de tipo:
Código SQL
[-]
select
mes, ano, importe
from tutabla
order by mes, ano // Esto es importante
A esa query le cargas los campos persistentes.
Le creas un nuevo campo persistente calculado que llamas por ejemplo trimestre y en el evento OnCalcFields de la query (y asegurate que la propiedad AutoCalcFields de la query está true) haces algo asi:
Código Delphi
[-]
if (QConsultaMES.AsInteger <= 3) then
QConsultaTRIMESTRE.AsInteger = 1
else if (QConsultaMES.AsInteger <= 6) then
QConsultaTRIMESTRE.AsInteger = 2
else if (QConsultaMES.AsInteger <= 9) then
QConsultaTRIMESTRE.AsInteger = 3
else
QConsultaTRIMESTRE.AsInteger = 4;
Ahora ya montas el informe con las bandas que te han indicado anteriormente pero en la propiedad Expression de la banda de grupo pones que el campo que supone el cambio de grupo es: Trimestre (de la Query).
A mi me parece la solución más "limpia" pero seguro que hay otras.
Un saludo.