Entiendo.
Para lograr eso, debes hacer uso de subconsultas y el comando case.
Código SQL:
Ver originalSELECT *FROM
(
SELECT to_char(fecha_timestamp, 'YYYY') anio,to_char(fecha_timestamp, 'Month') mes, SUM(valor) valor
FROM tabla
GROUP BY to_char(fecha_timestamp, 'YYYY'),to_char(fecha_timestamp, 'Month')
) meses
ORDER BY (CASE WHEN meses.mes='January' THEN 1
WHEN meses.mes='February' THEN 2
WHEN meses.mes='March' THEN 3
WHEN meses.mes='April' THEN 4
WHEN meses.mes='May' THEN 5
WHEN meses.mes='June' THEN 6
WHEN meses.mes='July' THEN 7
WHEN meses.mes='August' THEN 8
WHEN meses.mes='September' THEN 9
WHEN meses.mes='October' THEN 10
WHEN meses.mes='November' THEN 11
WHEN meses.mes='December' THEN 12
ELSE 0 END
);
También puse el año, pero si deseas, lo puedes quitar como culumna y hacerlo en el where como filtro. De lo contrario, te mezclaría varios años en caso de que tengas mas registros.