Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

kursor, aby zaktualizować wiersz wartościami z poprzedniego i bieżącego wiersza

OK, spróbuj tego.

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

Używa WHILE pętla, która w większości przypadków powinna być szybsza niż kursor.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie sql zajmuje więcej czasu, gdy jest uruchamiane w widoku

  2. Zmień tabele replikowane w programie SQL Server 2008 R2

  3. Klauzula T-SQL CASE:problem z określeniem WHEN NULL z zewnętrznym JOIN

  4. Pakiet SSIS wyświetla błąd po wdrożeniu SQL Server 2012

  5. datetime do totalminute w sql