Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

con trỏ để cập nhật một hàng với các giá trị từ các hàng trước đó và hiện tại

OK, hãy thử cái này.

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

Sử dụng WHILE vòng lặp sẽ nhanh hơn con trỏ trong hầu hết các trường hợp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đọc khóa tệp cấu hình trong thủ tục lưu trữ SQL Server 2008

  2. Chèn một chuỗi với các số 0 ở đầu để nó dài 3 ký tự trong SQL Server 2008

  3. OBJECTPROPERTY () so với OBJECTPROPERTYEX () trong SQL Server:Sự khác biệt là gì?

  4. Tên cột hoặc số lượng giá trị được cung cấp không khớp với định nghĩa bảng

  5. Truy vấn con không được phép sau GIÁ TRỊ?