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

Làm cách nào để tính tổng số đang chạy trong SQL mà không sử dụng con trỏ?

Bạn có thể muốn xem bản cập nhật cho giải pháp biến cục bộ tại đây:http://geekswithblogs.net/Rhames/archive/2008/10/28/calculating-running-totals-in-sql-server-2005--- the-tối ưu.aspx

DECLARE @SalesTbl TABLE (DayCount smallint, Sales money, RunningTotal money)

DECLARE @RunningTotal money

SET @RunningTotal = 0

INSERT INTO @SalesTbl 
SELECT DayCount, Sales, null
FROM Sales
ORDER BY DayCount

UPDATE @SalesTbl
SET @RunningTotal = RunningTotal = @RunningTotal + Sales
FROM @SalesTbl

SELECT * FROM @SalesTbl

Tốt hơn tất cả các phương pháp khác, nhưng có một số nghi ngờ về thứ tự hàng được đảm bảo. Có vẻ như hoạt động tốt khi bảng tạm thời được lập chỉ mục ..

  • Truy vấn phụ lồng nhau 9300 mili giây
  • Tự tham gia 6100 mili giây
  • Con trỏ 400 mili giây
  • Cập nhật lên biến cục bộ 140 mili giây


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận quyền thực thi đối với xp_cmdshell

  2. Tại sao thực thi các thủ tục được lưu trữ nhanh hơn truy vấn SQL từ một tập lệnh?

  3. Cuộc gọi MS Access thủ tục SQL Server được lưu trữ

  4. Thứ tự của các cột trong mệnh đề WHERE có quan trọng không?

  5. Thay đổi thông báo với Sql Server 2008