В SQL нет встроенного понятия порядка, поэтому вам нужно упорядочить по некоторому столбцу, чтобы это имело смысл. Примерно так:
select t1.value - t2.value from table t1, table t2
where t1.primaryKey = t2.primaryKey - 1
Если вы знаете, как упорядочить вещи, но не знаете, как получить предыдущее значение с учетом текущего (например, вы хотите упорядочить по алфавиту), то я не знаю, как это сделать в стандартном SQL, но большинство SQL реализации будут иметь расширения для этого.
Вот способ для SQL-сервера, который работает, если вы можете упорядочить строки так, чтобы каждая из них отличалась:
select rank() OVER (ORDER BY id) as 'Rank', value into temp1 from t
select t1.value - t2.value from temp1 t1, temp1 t2
where t1.Rank = t2.Rank - 1
drop table temp1
Если вам нужно разорвать связи, вы можете добавить столько столбцов, сколько необходимо в ORDER BY.