Сначала вы генерируете каждую дату, которую хотите, во встроенном представлении.Я выбрал каждую дату на текущий год, потому что вы не указали.Затем вы оставили внешнее объединение на дату, используя любое поле даты, которое вы в этой таблице.Если вы рассчитываете на ненулевое поле из исходной таблицы, оно будет считать 0 строк в дни, когда нет соединения.
select Dates.r, count(tablename.id)
from (select trunc(sysdate,'YYYY') + level - 1 R
from dual
connect by level <= trunc(add_months(sysdate,12),'YYYY') - trunc(sysdate,'YYYY')) Dates
left join tablename
on trunc(tablename.datefield) = Dates.r
group by Dates.r