Единият вариант е да използвате рекурсивен cte (ако правилно разбирам изискванията ви):
WITH RNCTE AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date) rn
FROM quotes
),
CTE AS (
SELECT symbol, date, rn, cast(0 as decimal(10,2)) perc, closed
FROM RNCTE
WHERE rn = 1
UNION ALL
SELECT r.symbol, r.date, r.rn, cast(c.closed/r.closed as decimal(10,2)) perc, r.closed
FROM CTE c
JOIN RNCTE r on c.symbol = r.symbol AND c.rn+1 = r.rn
)
SELECT * FROM CTE
ORDER BY symbol, date
Ако имате нужда от текуща обща сума за всеки символ, която да използвате като процентна промяна, тогава е достатъчно лесно да добавите допълнителна колона за тази сума - не бяхте напълно сигурни какви са вашите намерения, така че горното просто разделя текущата затворена сума на предишна затворена сума.