Podría ser más simple simplemente usar GROUP BY y luego en su código real agregar las fechas que faltan (o iterar a través de todo el rango de fechas y generar un cero si falta la fecha en los resultados de la consulta).
No todo tiene que resolverse en SQL, y muchas cosas son más fáciles de resolver en otros lugares. :)