Personalmente, no especialmente bueno en SQL, pero en alguna ocasión que he tenido que hacer algo similar, lo he resuelto utilizando un Stored Procedure que retorna una tabla.
En la primera parte del SP se generaba la tabla con los valores vacíos, en tu caso algo así:
Código Delphi
[-]
Ventas al contado 05.12.2016 0 0.000
Facturas 05.12.2016 0 0.000
Cuotas 05.12.2016 0 0.000
Ventas al contado 06.12.2016 0 0.000
Facturas 06.12.2016 0 0.000
Cuotas 06.12.2016 0 0.000
Ventas al contado 07.12.2016 0 0.000
Facturas 07.12.2016 0 0.000
Cuotas 07.12.2016 0 0.000
Ventas al contado 10.12.2016 0 0.000
Facturas 10.12.2016 0 0.000
Cuotas 10.12.2016 0 0.100
...
(igual para el resto de fechas)
Y luego lo que tú haces con SELECT, se hace con UPDATES para que actualice los valores que coinciden con fecha y nombre.
Der forma que los que se han actualizado tienen el valor correcto y el resto quedan a cero.
No se si me explico.