Se possibile, cerca di evitare di generare dati al volo. Rende le query molto semplici ridicolmente complesse, ma soprattutto:confonde l'ottimizzatore all'infinito.
Se hai bisogno di una serie di numeri interi, usa una tabella statica di numeri interi. Se hai bisogno di una serie di date, mesi o altro, usa una tabella del calendario. A meno che tu non abbia a che fare con requisiti davvero straordinari, una tabella statica è la strada da percorrere.
Ho fornito un esempio su come creare una tabella di numeri e una tabella di calendario minima (solo date) in questa risposta .
Se disponi di quelle tabelle, diventa facile risolvere la tua query.
- Aggrega i dati dell'ordine a MESE.
- Unisci a destra alla tabella dei mesi (o MESE distinto dalla tabella delle date)