Die Partitionierung führt zu einer laufenden Summenabfrage

Ich suche nach einem schnellen Weg, um kumulative Summen in einem großen SQL Server 2008-Datensatz zu erstellen, der diese Partition nach einer bestimmten Spalte unterteilt, möglicherweise unter Verwendung von aMehrfachbelegungsvariable Lösung. Als sehr einfaches Beispiel möchte ich die folgende Spalte "cumulative_total" erstellen:

user_id | month | total | cumulative_total

1       | 1     | 2.0   | 2.0
1       | 2     | 1.0   | 3.0
1       | 3     | 3.5   | 8.5

2       | 1     | 0.5   | 0.5
2       | 2     | 1.5   | 2.0
2       | 3     | 2.0   | 4.0

Wir haben dies traditionell mit korrelierten Unterabfragen gemacht, aber über große Datenmengen (mehr als 200.000 Zeilen und mehrere verschiedene Kategorien der laufenden Summe) ergibt dies keine optimale Leistung.

Ich habe kürzlich gelesen, wie man mehrere Zuweisungsvariablen für die kumulative Summierung verwendet:

http://sqlblog.com/blogs/paul_nielsen/archive/2007/12/06/cumulative-totals-screencast.aspx

In dem Beispiel in diesem Blog sieht die Lösung der kumulativen Variablen folgendermaßen aus:

UPDATE my_table
SET @CumulativeTotal=cumulative_total=@CumulativeTotal+ISNULL(total, 0)

Diese Lösung scheint im obigen Beispiel für einen einzelnen Benutzer (Benutzer 1 oder Benutzer 2) hervorragend schnell zu summieren. Ich muss jedoch effektiv nach Benutzern partitionieren - geben Sie mir die kumulierte Gesamtsumme nach Benutzern pro Monat.

Kennt jemand eine Möglichkeit, das Konzept der Mehrfachzuweisungsvariablen zu erweitern, um dieses Problem zu lösen, oder andere Ideen als korrelierte Unterabfragen oder Cursor?

Vielen Dank für eventuelle Tipps.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage