如何获取和处理 2 条记录然后连续对?

How do I fetch and process 2 records then consecutive pair?

我需要一个接一个地处理记录,将每个记录与其之前的记录进行比较,然后移至下一个并执行相同的操作直到最后一个记录。

要处理的结构

id  dat        qty  dif
1   2019-05-01  2   NULL
2   2019-05-01  6   NULL
3   2019-05-01  3   NULL
1   2019-05-02  4   NULL
2   2019-05-02  7   NULL
3   2019-05-02  5   NULL

预期结果

id  dat        qty  dif
1   2019-05-01  2   0
1   2019-05-02  4   2
2   2019-05-01  6   0
2   2019-05-02  7   1
3   2019-05-01  3   0
3   2019-05-02  5   2

对于 id =1 和 dat= '2019-05-01' dif = (2 - 0) 这是当前数量减去先前数量 对于 id =1 和 dat= '2019-05-02' dif = (4 - 2)

我需要可滚动光标吗?如何获得?

由于SQL Server 2008不支持LAG,我们可以尝试使用相关子查询来模拟它:

SELECT
    id,
    dat,
    qty,
    qty - COALESCE((SELECT TOP 1 t2.qty FROM yourTable t2
           WHERE t2.id = t1.id AND t2.dat < t1.dat
           ORDER BY t2.dat DESC), t1.qty) AS dif
FROM yourTable t1
ORDER BY
    id, dat;

Demo