各位查询作者,
我有一个表如下:
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
Uses a WHILE
在大多数情况下循环应该比光标更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)