sql >> Database teknologi >  >> RDS >> Sqlserver

markøren for at opdatere en række med værdier fra den forrige og den nuværende række

OK, prøv dette.

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

Bruger en WHILE loop, som burde være hurtigere end en markør under de fleste omstændigheder.



  1. Udfylder Many2many-feltet (odoo 8)

  2. Hvordan overføres Oracle dump-fil til AWS RDS-instans?

  3. Prædikatfejl med Oracle VPD/RLS

  4. Udfør Union, hvis der findes en tabel med disse navne