sql >> Databáze >  >> RDS >> Sqlserver

Jak vypočítám průběžný součet v SQL bez použití kurzoru?

Možná se budete chtít podívat na aktualizaci řešení lokálních proměnných zde: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

Překonává všechny ostatní metody, ale má určité pochybnosti o zaručeném pořadí řádků. Zdá se, že funguje dobře, když je indexována dočasná tabulka..

  • Vnořený dílčí dotaz 9300 ms
  • Vlastní připojení 6100 ms
  • Kurzor 400 ms
  • Aktualizace na místní proměnnou 140 ms


  1. T-SQL poddotaz Max (datum) a spojení

  2. Vložení obrázku do BLOB Oracle 10g

  3. Metoda org.postgresql.jdbc4.Jdbc4Connection.isValid(int) zatím není implementována

  4. Jak mohu procházet všechny řádky tabulky? (MySQL)