Проблема с вашим кодом заключается в том, что вы используете LAG
в столбце CHAR
(PERIOD
), что неверно, поскольку 2020-FEB ниже, чем 2020-JAN , когда сравнение в строке.
Вы должны использовать их как функцию date
in LAG
следующим образом:
WITH B2 AS (
SELECT COUNT(SALE) AS CNT,
TRUNC(DATE, 'MON') AS PERIOD
FROM ORDER
WHERE DATE BETWEEN DATE '2020-01-01' AND DATE '2020-02-28'
GROUP BY TRUNC(DATE, 'MON')
)
SELECT
CNT,
TO_CHAR(PERIOD,'YYYY-MON') AS PERIOD,
100 * ( CNT - LAG(CNT, 1, CNT) OVER( ORDER BY PERIOD ) )
/ LAG(CNT, 1, CNT) OVER(ORDER BY PERIOD)
AS "variance(%)"
FROM B2
ORDER BY PERIOD
Приветствия !!