У нас есть таблица, в которой хранится месячный бюджет для различных клиентских сегментов:
SalesMonth | SalesYear | MonthBudget | CustomerType
1 | 2018 | 275000 | Elite
2 | 2018 | 300000 | Elite
1 | 2018 | 150000 | Top
2 | 2018 | 175000 | Top
1 | 2018 | 50000 | Base
2 | 2018 | 1000000 | Base
etc..
Я хочу взять цель за предыдущие 3 месяца (всего, а не по типу клиента) и посмотреть на месяц3 месяца вперед и рассчитать увеличение / уменьшение% цели.Я могу получить это для расчета прямо сейчас (для расчета августа), но как бы я сделал это для всех месяцев года?(понимаю, что мой код статичен и не будет работать для января / февраля / марта 2018 года, но данные за 2017 год есть. У нас еще нет данных за 2019 год, поэтому я понимаю, что октябрь / ноябрь / декабрь также отключены.
with _sum as(
SELECT
SalesMonth
,SUM([MonthBudget]) as MonthBudget
FROM [SALES].[dbo].[SALES_PLAN]
WHERE CustomerType NOT IN ('Design')
and year(dtdate) = '2018'
Group by SalesMonth
)
SELECT
SalesMonth
,MonthBudget
,(LAG(MonthBudget,1) OVER (Order by [dtDate])+LAG(MonthBudget,2) OVER (Order by [dtDate])+LAG(MonthBudget,3) OVER (Order by [dtDate]))/3 as Previous3AVG
,LEAD(MonthBudget,3) OVER (Order by [dtDate]) as Future3MOBudget
,(LEAD(MonthBudget,3) OVER (Order by [dtDate]))/nullif(((LAG(MonthBudget,1) OVER (Order by [dtDate])+LAG(MonthBudget,2) OVER (Order by [dtDate])+LAG(MonthBudget,3) OVER (Order by [dtDate]))/3),0) as [Change%]
FROM [SALES].[dbo].[SALES_PLAN]