Partycjonowanie skutkuje uruchomionym zapytaniem o sumy

Szukam szybkiego sposobu na tworzenie zbiorczych sum w dużym zestawie danych programu SQL Server 2008, który jest partycją według konkretnej kolumny, potencjalnie przy użyciurozwiązanie zmienne z wieloma przypisaniami. Jako bardzo prosty przykład chcę utworzyć kolumnę „cumulative_total” poniżej:

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

Tradycyjnie robimy to w przypadku skorelowanych podkwerend, ale w przypadku dużych ilości danych (ponad 200 000 wierszy i kilku różnych kategorii uruchomionych danych) nie daje to nam idealnej wydajności.

Ostatnio przeczytałem o używaniu wielu zmiennych przypisania do sumowania sumy tutaj:

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

W przykładzie na tym blogu skumulowane rozwiązanie zmienne wygląda tak:

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

To rozwiązanie wydaje się niezwykle szybkie dla sumowania dla pojedynczego użytkownika w powyższym przykładzie (użytkownik 1 lub użytkownik 2). Jednak muszę efektywnie partycjonować według użytkownika - daj mi łączną sumę według użytkowników według miesięcy.

Czy ktoś wie, jak rozszerzyć koncepcję zmiennej z wieloma przypisaniami, aby rozwiązać ten problem, lub inne pomysły inne niż skorelowane podzapytania lub kursory?

Wielkie dzięki za wszelkie wskazówki.

questionAnswers(2)

yourAnswerToTheQuestion