Nous avons un tableau qui stocke le budget mensuel pour nos différents segments de clients :
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..
Je veux prendre l'objectif des 3 mois précédents (total, pas par type de client) et regarder le mois à venir et calculer le pourcentage d'augmentation/diminution de l'objectif. Je suis capable de faire ce calcul pour l'instant (pour calculer le mois d'août), mais comment puis-je le faire pour tous les mois de l'année ? (Réalisez que mon code est statique et ne fonctionnera pas pour Jan/Feb/Mar de 2018, mais les données de 2017 sont là. Nous n'avons pas encore les données de 2019, donc je comprends que Oct/Nov/Dec est éteint aussi.
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]