В следующем коде я пытаюсь вычислить скользящую среднюю каждого месяца по сравнению с последними 6 месяцами. Однако SQL исключает строки, которые являются нулевыми в знаменателе для среднего значения.Использование {Ряд предшествующих} для скользящего среднего sql
Для примера: -
Допустим, средний (COUNT (*)) для сентября 4, а значения с марта по август 0.In мой код, SQL принимает 4/1, но мне нужно его включить в предыдущие месяцы, даже если они не имеют значений (4/6).
select [Name],[Report Month]
,avg(count(*)) over (partition by [Name]
order by [Report Month]
ROWS 5 PRECEDING)
FROM dbo.Sample
group by [Name],[Report Month]
По suggestion.I Tab пытался создать таблицу месяца, чтобы их оставили вместе с dbo.sample, я не знаком с созданием месяца таблицы, поэтому я использовал интернет-ресурс, Ниже коду. (Я использую SQLServer2014, он сказал в ресурсе, код для 2000)
CREATE TABLE CalendarMonths (
date DATETIME,
PRIMARY KEY (date)
)
DECLARE
@basedate DATETIME,
@offset INT
SELECT
@basedate = '01 Jan 2000',
@offset = 1
WHILE (@offset < 2048)
BEGIN
INSERT INTO CalendarMonths SELECT DATEADD(MONTH, @offset, date) FROM CalendarMonths
SELECT @offset = @offset + @offset
END
Вы помощь очень ценится !! .. Спасибо заранее.
Бест,
Вставить правую часть 'dbo.Sample' в таблицу месяца. –
Привет, спасибо. Можете ли вы подробно остановиться? –
Я попытался создать таблицу месяца, но он показывает 0 строк, затронутых. Можете ли вы поделиться своим запросом? –