We had a similar situation, where we wanted to show zero sales for a day for a given product. We solved it by using a calendar table in our SQL. This calendar table has one row in it for every day. It also has extra attributes, such as day of week, day of year, week of year, day name (sun, mon, etc), month name, month abbr, month id (1-12), etc.
so our sql had a left outer join from the calendar table to the sales table, such as
select
c.date,
sum(coalesce (s.sales_qty, 0)) as sales_qty
from calendar c
left outer join sales s on c.date = s.sales_date
group by c.date
by using the date field from the calendar table, we always had a row of data for each day of the period. and using the coalece to convert null values (where there weren’t any sales) to zeros, we had the desired results.