Кажется, что вам нужна таблица дат (со списком всех дней в году) и левая присоединение к этой таблице с вашими сгруппированными данными (количество активных заказов в день года).
Вы можете использовать эту таблицу дат из Aaron Bertrand . Я сгенерировал таблицу #dim со следующими параметрами, чтобы генерировать только данные за два года (2015, 2016):
DECLARE @StartDate DATE = '20150101', @NumberOfYears INT = 2;
Затем вы можете сделать следующее:
with ordertable as
(
select 1 as orderid, '20160101' as orderdate, 2 as bindingtime union all
select 2, '20160305', 3 union all
select 3, '20160305', 5 union all
select 4, '20150305', 5
)
select d.year, isnull(count(orderid), 0) nrActiveOrdersFirstDayOfYear
from #dim d
left join ordertable g on d.year = year(g.orderdate)
and g.orderdate = d.date
and d.FirstOfYear between g.orderdate and DATEADD(mm, g.bindingtime, OrderDate)
group by d.year
С примерами данных, которые я привел в качестве примера, вы получите результат:
year nrActiveOrdersFirstDayOfYear
2015 0
2016 1
Рабочий демо здесь .