Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

курсор, за да актуализирате ред със стойности от предишния и текущия ред

Добре, опитайте това.

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

Използва WHILE цикъл, който трябва да бъде по-бърз от курсор при повечето обстоятелства.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изброите остарелите функции в екземпляр на SQL сървър с помощта на T-SQL

  2. 3 въпроса за наблюдение на SQL Server, които да зададете при поемане на позиция в DBA

  3. Запазване на ORDER BY в SELECT INTO

  4. Как да зададете инвариантната култура, когато използвате FORMAT() в SQL Server

  5. Отрязване на таблицата и АКТУАЛИЗИРАНЕ на статистика