Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak obliczyć sumę bieżącą w SQL bez użycia kursora?

Możesz rzucić okiem na aktualizację rozwiązania zmiennych lokalnych tutaj: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

Przewyższa wszystkie inne metody, ale ma pewne wątpliwości co do gwarantowanej kolejności wierszy. Wydaje się jednak działać dobrze, gdy tabela temp jest indeksowana.

  • Zagnieżdżone zapytanie podrzędne 9300 ms
  • Samołączanie 6100 ms
  • Kursor 400 ms
  • Aktualizuj do zmiennej lokalnej 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. Jak zmienić domyślną bazę danych w SQL Server bez użycia MS SQL Server Management Studio?

  2. Co to jest @@TEXTSIZE w programie SQL Server?

  3. Eliminacja przyłączeń:gdy SQL Server usuwa niepotrzebne tabele

  4. Wykonywać procedurę składowaną z parametrem Output?

  5. Czy UNION ALL gwarantuje kolejność zestawu wyników?