gpt4 book ai didi

sql - 游标使用前一行和当前行的值更新一行

转载 作者:行者123 更新时间:2023-12-04 13:55:13 27 4
gpt4 key购买 nike

各位查询作者,

我有一个表如下:

myTable t1
col2 col3
2 1
3 0
4 0
5 0
6 0

我想用前一行中 col3 的值加上当前行中 col2 的值更新 col3 上的每个零。所以我的表会喜欢以下内容:
myTable t1
col2 col3
2 1
3 4 (1+3)
4 8 (4+4)
5 13 (5+8)
6 19 (6+13)

我错过了这里的逻辑,也许是短视。我用游标尝试它如下:
DECLARE @var3 FLOAT

DECLARE cursor3 CURSOR FOR
SELECT col2, col3 FROM table1
FOR UPDATE OF col3
OPEN cursor3


FETCH FIRST FROM cursor3
WHILE (@@FETCH_STATUS > -1)
BEGIN
UPDATE @table1
SET col3 = isnull(@var3, 0) + isnull(col2, 0)
WHERE CURRENT OF cursor3
FETCH NEXT FROM cursor3 INTO @var3
END

但这是错误的。
有任何想法吗?

提前致谢。

最佳答案

好的,试试这个。

CREATE TABLE MyTable (Id INT Identity, Col2 int, Col3 int)

INSERT INTO MyTable (Col2, Col3)
VALUES (2,1), (3,0), (4,0),(5,0),(6,0)

SELECT * from MyTable

WHILE (SELECT COUNT(*) FROM MyTable WHERE Col3=0) > 0
BEGIN
UPDATE TOP (1) MyTable
SET CoL3 = (Mytable.col2 + (select col3 from mytable t2 where (t2.id = mytable.id-1)))
WHERE Col3 = 0
END

SELECT * from MyTable

使用 WHILE在大多数情况下应该比游标更快的循环。

关于sql - 游标使用前一行和当前行的值更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089777/

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