我需要逐一处理记录,然后将记录与其上一个记录进行比较,然后移至下一个记录,直到最后一条记录。
程序结构
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)
我需要可滚动光标吗?如何获得?
答案 0 :(得分:1)
由于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;