gpt4 book ai didi

sql - 如何从 SELECT 语句的前一个结果行获取值?

转载 作者:行者123 更新时间:2023-12-05 00:43:44 26 4
gpt4 key购买 nike

如果我们有一个名为 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

那么任何人都可以帮助我获得解决此类问题的最佳解决方案吗?

最佳答案

这个 sql 应该比你上面的那个执行得更好,尽管这些类型的查询往往有点性能密集......所以你可以在它们中放入任何东西来限制你正在查看的数据集的大小,这将有很大帮助。例如,如果您正在查看特定日期范围,请将其输入。

SELECT followup.value, 
( SELECT TOP 1 f1.VALUE
FROM followup as f1
WHERE f1.id<followup.id
ORDER BY f1.id DESC
) AS Prev_Value
FROM followup

HTH

关于sql - 如何从 SELECT 语句的前一个结果行获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com