sql >> Databasteknik >  >> RDS >> Sqlserver

markören för att uppdatera en rad med värden från föregående och nuvarande rad

Okej, prova detta.

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

Använder en WHILE loop som bör vara snabbare än en markör under de flesta omständigheter.



  1. Vad är skillnaden mellan MySQL och SQL?

  2. Hur kan vi förhindra SQL-injektion från MySQL?

  3. C# - Oväntad autentiseringsmetod mysql_native_password undantag

  4. Letar du efter ett bra exempel på Bulk Insert XML Shredding för SQL 2005