Existem algumas soluções no SO:
- Como incluo linhas vazias em uma única consulta SQL GROUP BY DAY(date_field)?
- gerar linhas vazias mesmo se estiver vazio entre 2 datas
- Grupo SQL incluindo linhas vazias
- MySQL GROUP BY e Fill Empty Rows
- Resuma por semana, mesmo para linhas vazias
Uma solução é para você outra tabela que contém todas as datas possíveis/relevantes. Uma implementação pode ser encontrada aqui:https://stackoverflow.com/a/7262803/1085891
Se executado com frequência, seria mais eficiente armazenar as datas. No entanto, para um relatório rápido, você pode gerar as datas necessárias e unir a saída à tabela na qual está pesquisando.
- t-sql obtém todas as datas entre 2 datas
- SQL Server:como selecionar todos os dias em um intervalo de datas, mesmo que não existam dados por alguns dias
- Obter todas as datas em intervalo de datas no SQL Server