Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Cursor, um eine Zeile mit Werten aus der vorherigen und aktuellen Zeile zu aktualisieren

OK, versuchen Sie es hier.

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

Verwendet ein WHILE Schleife, die unter den meisten Umständen schneller sein sollte als ein Cursor.