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

Как да изчисля текущата сума в SQL, без да използвам курсор?

Може да искате да разгледате актуализацията на решението за локална променлива тук:http://geekswithblogs.net/Rhames/archive/2008/10/28/calculating-running-totals-in-sql-server-2005--- the-optimal.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

Превъзхожда всички други методи, но има известни съмнения относно гарантирания ред на редовете. Изглежда обаче работи добре, когато временната таблица е индексирана...

  • Вложена подзаявка 9300 ms
  • Самосъединяване 6100 ms
  • Курсор 400 ms
  • Актуализация до локална променлива 140 ms


  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 Server блокира достъпа до процедурата 'sys.sp_OACreate' на компонента 'Ole Automation Procedures'

  2. Как да изпълним директно SQL заявка в C#?

  3. Различно представяне на UUID в Java Hibernate и SQL Server

  4. Как да преименувате база данни на SQL сървър с помощта на T-SQL

  5. COS() Примери в SQL Server