SELECT
T1.Customer_Name, T1.Year, T1.Avg_Price,T1.Avg_Qty,
CASE
WHEN T2.Year IS NOT NULL
THEN FORMAT(CONVERT(DECIMAL(8,2),(T1.Avg_Price-T2.Avg_Price))/CONVERT(DECIMAL(8,2),T2.Avg_Price),'p') ELSE NULL
END AS 'YEARLY_%_CHANGE'
FROM
(SELECT t2.Customer_Name, YEAR(t1.DATE) AS YEAR, AVG(t1.TotalPrice) AS Avg_Price, AVG(t1.Quantity) AS Avg_Qty FROM FACT_TRANSACTIONS AS t1
left join DIM_CUSTOMER as t2 ON t1.IDCustomer=t2.IDCustomer
where t1.IDCustomer in (select top 100 IDCustomer from FACT_TRANSACTIONS group by IDCustomer order by SUM(TotalPrice) desc)
group by t2.Customer_Name, YEAR(t1.Date)
)T1
left join
(SELECT t2.Customer_Name, YEAR(t1.DATE) AS YEAR, AVG(t1.TotalPrice) AS Avg_Price, AVG(t1.Quantity) AS Avg_Qty FROM FACT_TRANSACTIONS AS t1
left join DIM_CUSTOMER as t2 ON t1.IDCustomer=t2.IDCustomer
where t1.IDCustomer in (select top 100 IDCustomer from FACT_TRANSACTIONS group by IDCustomer order by SUM(TotalPrice) desc)
group by t2.Customer_Name, YEAR(t1.Date)
)T2
on T1.Customer_Name=T2.Customer_Name and T2.YEAR=T1.YEAR-1
Годы не непрерывны. Какие изменения я должен внести, чтобы получить правильный результат?
3-е и 4-е значение в этом примере выходных данных:
Angella Cetta 2003 170.00 1 NULL
Angella Cetta 2004 282.50 1 66.18%
Angella Cetta 2007 300.00 1 NULL
Angella Cetta 2010 173.00 1 NULL