, чтобы получить следующий более низкий идентификатор транзакции, вы можете использовать подзапрос
Select max(transactionid)
from vinner
where vinner.tr.ansactionid <vouter.transactionid
Это прекрасно работает для меня:
select v1.transactionid as HigherTransactionID
,v2.transactionid as LowerTransactionId
,v1.quantity as HigherQuan
,v2.quantity as LowerQuan
,v1.quantity - v2.quantity as Result
from v as v1
left join v as v2 on
v2.transactionid =
(Select MAX(v.transactionid)
from v
where v.transactionid < v1.transactionid)
Протестировано со следующей таблицей:
quantity transactionid
8200 795
7900 794
6600 793
6300 792
6000 788
5700 787
4300 786
со следующим результатом:
HigherTransactionID LowerTransactionId HigherQuan LowerQuan Result
795 794 8200 7900 300
794 793 7900 6600 1300
793 792 6600 6300 300
792 788 6300 6000 300
788 787 6000 5700 300
787 786 5700 4300 1400
786 NULL 4300 NULL NULL
Надеюсь, это то, что вы ожидали