Вы можете использовать lag()
, как в:
select t.*,
(value + lag(value) over (order by id)) as result
from t;
Если вы хотели получить значение для первой строки, вы можете использовать sum()
с предложением управления окнами:
select t.*,
sum(t.value) over (order by t.id rows between 1 preceding and current row) as result
from t;
Это легко обобщает на несколько строк.
Или, если у id
нет пропусков, вы можете использовать join
:
select t.*, (t.value + tprev.value) as result
from t left join
t tprev
on tprev.id = t.id - 1;