Lyn*_*ler 6 sql select sql-server-2005 cursor
查询作家,
我有一张表如下:
myTable t1
col2 col3
 2    1
 3    0
 4    0
 5    0
 6    0
Run Code Online (Sandbox Code Playgroud)
我想更新col3上的每个零,前一行中col3的值加上当前行中col2的值.所以我的表格会如下:
myTable t1
col2 col3
 2    1 
 3    4  (1+3)
 4    8  (4+4)
 5    13 (5+8) 
 6    19 (6+13)
Run Code Online (Sandbox Code Playgroud)
我错过了这里的逻辑,也许是短视.我用光标尝试如下:
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
Run Code Online (Sandbox Code Playgroud)
但这是错的.有任何想法吗?
提前致谢.
好的,试试这个.
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
Run Code Online (Sandbox Code Playgroud)
WHILE在大多数情况下使用一个比光标快的循环.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           32836 次  |  
        
|   最近记录:  |