Je zou de vraag naar zichzelf kunnen laten samenvoegen op het nummer van de maand min 1. Dan had je de som van de maand en de laatste maand op één rij en kon je het percentage berekenen. Lijkt op het volgende:
SELECT monthname(concat('1970-', lpad(A.MONTH, 2, '0'), '-01')) AS MONTH,
A.SALE_PRICE,
CASE
WHEN A.SALE_PRICE IS NULL
THEN NULL
WHEN B.SALE_PRICE IS NULL
THEN NULL
WHEN A.SALE_PRICE = 0
THEN NULL
ELSE
(B.SALE_PRICE / A.SALE_PRICE - 1) * 100
END AS PERCENTAGE
FROM (SELECT month(DATE_PURCHASED) AS MONTH,
sum(SALE_PRICE) AS SALE_PRICE,
FROM SALE
WHERE year(DATE_PURCHASED) = 2017
GROUP BY MONTH) A
LEFT JOIN (SELECT month(DATE_PURCHASED) AS MONTH,
sum(SALE_PRICE) AS SALE_PRICE,
FROM SALE
WHERE year(DATE_PURCHASED) = 2017
GROUP BY MONTH) B
ON A.MONTH - 1 = B.MONTH
ORDER BY A.MONTH;
Opmerking A
en B
dat is uw vraag, zojuist gewijzigd zodat de maand numeriek is, omdat dit nodig is in de ON
clausule.