sql >> Database >  >> RDS >> Sqlserver

Hoe bereken ik een lopend totaal in SQL zonder een cursor te gebruiken?

Misschien wil je hier de update naar de lokale variabele oplossing bekijken: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

Presteert beter dan alle andere methoden, maar heeft enige twijfels over de gegarandeerde rijvolgorde. Lijkt goed te werken als de tijdelijke tabel is geïndexeerd..

  • Geneste subquery 9300 ms
  • Zelf deelnemen 6100 ms
  • Cursor 400 ms
  • Update naar lokale variabele 140 ms


  1. Hoe een variabele in te stellen vanuit een SQL-query?

  2. psycopg2:voeg meerdere rijen in met één query

  3. Oracle Database Explorer:gratis training en accreditatie

  4. ORA-30926:kan geen stabiele set rijen in de brontabellen krijgen