sql >> Database >  >> RDS >> Sqlserver

cursor om een ​​rij bij te werken met waarden uit de vorige en huidige rijen

Oké, probeer dit.

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

Gebruikt een WHILE lus die onder de meeste omstandigheden sneller zou moeten zijn dan een cursor.



  1. Hoe converteer ik een binaire pgdump (gecomprimeerd) naar een gewoon SQL-bestand?

  2. Extraheer de dag / maand / jaar uit een tijdstempel op MYSQL

  3. Zijn PL/pgSQL en SQL in PostgreSQL beide op hetzelfde niveau als de SQL/PSM-standaard, in plaats van alleen als SQL-standaard?

  4. Yii2 - linker join op meerdere voorwaarde