Potrebbe essere più semplice utilizzare semplicemente GROUP BY e quindi nel codice effettivo aggiungere le date mancanti (o scorrere l'intero intervallo di date e generare uno zero se la data non è presente nei risultati della query).
Non tutto deve essere risolto in SQL e molte cose sono più facili da risolvere altrove. :)