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に必要な数の列を追加できます。