Вы можете использовать функцию lag()
analyti c:
WITH b2 AS
(
SELECT TO_CHAR("date",'YYYYMM') AS period0, -- in order to use for ordering
TO_CHAR("date",'YYYY-MON') AS period, -- in order to display month abbreviations
COUNT(DISTINCT sale) As cnt
FROM BETA_MAN_POS_mth
GROUP BY TO_CHAR("date",'YYYYMM'), TO_CHAR("date",'YYYY-MON')
)
SELECT cnt ,period,
100*(cnt-lag(cnt,1,cnt) over (order by period0))
/lag(cnt,1,cnt) over (order by period0)
as "variance(%)"
FROM b2
ORDER BY period0
, чтобы получить значение отдельного столбца для предыдущей строки.
Демонстрация