【发布时间】:2009-04-12 19:02:13
【问题描述】:
如果我们有一个名为 FollowUp 的表并且有行 [ ID(int) , Value(Money) ]
我们有一些行,例如
ID --值
1--------70
2--------100
3--------150
8-----200
20-----250
45-----280
我们要创建一个 SQL 查询,获取每个行 ID、值和数据显示如下的前一个行值
ID --- 值 --- Prev_Value
1 ----- 70 ---------- 0
2 ----- 100 -------- 70
3 ----- 150 -------- 100
8 ----- 200 ----- 150
20 ---- 250 -------- 200
45 ---- 280 -------- 250
我进行了以下查询,但我认为它在大量数据中的性能非常糟糕
SELECT FollowUp.ID, FollowUp.Value,
(
SELECT F1.Value
FROM FollowUp as F1 where
F1.ID =
(
SELECT Max(F2.ID)
FROM FollowUp as F2 where F2.ID < FollowUp.ID
)
) AS Prev_Value
FROM FollowUp
那么任何人都可以帮助我为此类问题找到最佳解决方案吗?
【问题讨论】:
-
您会指定 RDBMS 吗?
-
抱歉,我忘记指定我使用 Access 2007 的 RDBMS
-
stackoverflow.com/questions/1062406 很多这样的问题...