Код Python задержка датчика вибрации

Кажется, что вам нужна таблица дат (со списком всех дней в году) и левая присоединение к этой таблице с вашими сгруппированными данными (количество активных заказов в день года).

Вы можете использовать эту таблицу дат из 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

Рабочий демо здесь .

0
задан jeffk 19 January 2019 в 20:11
поделиться