Il Campo che ottieni con il Format è di tipo TESTO, motivo per cui non è possibile pensare possa ordinarlo come numero, “AGOSTO” è sicuramente il primo in ordine Alfabetico, quindi anche il suggerimento di @Stifone non può andare.
Per ottenere quello che vuoi devi dividere Mese e Anno e mantenerli Numerici, una cosa simile:
SELECT Year([Data]) AS YY,
Month([Data]) AS MM,
Strconv(MonthName(Month([Data])),3) AS MN
FROM TuaTabella
GROUP BY
Year([Data]), Month([Data]),
Strconv(MonthName(Month([Data])),3)
ORDER BY Year([Data]), Month([Data]);
Se poi vuoi un campo con concatenato “Mese + anno” da mettere nell'elenco campi e nel GroupBy ma NON nell'ORDER BY
(strconv(MonthName(Month([Data])),3) + ' ' + Year(Data)) As TuoCampoSpeciale
Al posto di MonthName puoi usare Format
(Strconv(Format([Data],"mmmm"),3) + ' ' + Year(Data)) As TuoCampoSpeciale
Il valore 3 nella Funzione strConv equivale a:
vbProperCase | 3 | Converte la prima lettera di ogni parola nella stringa in maiuscolo. |