sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan beregner jeg en løbende total i SQL uden at bruge en markør?

Du vil måske tage et kig på opdateringen til lokal variabelløsning her: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

Udkonkurrerer alle andre metoder, men er i tvivl om garanteret rækkefølge. Ser dog ud til at fungere fint, når temp-tabellen er indekseret..

  • Indlejret underforespørgsel 9300 ms
  • Tilmeld dig selv 6100 ms
  • Markør 400 ms
  • Opdatering til lokal variabel 140 ms


  1. SQL Inner Join

  2. Oracle datoforskel for at få antal år

  3. Opdel værdi fra et felt til to

  4. SQLiteStatement udfører en SELECT / INSERT / DELETE / UPDATE