O particionamento resulta em uma consulta de totais em execução

Estou procurando uma maneira rápida de criar totais cumulativos em um grande conjunto de dados do SQL Server 2008 que particione por uma coluna específica, potencialmente usando umsolução de variável de atribuição múltipla. Como um exemplo muito básico, gostaria de criar a coluna "cumulative_total" abaixo:

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

Temos tradicionalmente feito isso com subconsultas correlacionadas, mas em grandes quantidades de dados (mais de 200.000 linhas e várias categorias diferentes de execução total) isso não está nos dando um desempenho ideal.

Recentemente li sobre o uso de várias variáveis ​​de atribuição para somar cumulativo aqui:

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

No exemplo desse blog, a solução de variável cumulativa se parece com isso:

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

Esta solução parece brilhantemente rápida para somar um único usuário no exemplo acima (usuário 1 ou usuário 2). No entanto, eu preciso efetivamente partição por usuário - me dá o total acumulado por usuário por mês.

Alguém sabe de uma maneira de estender o conceito de variável de atribuição múltipla para resolver isso, ou quaisquer outras idéias além de subconsultas ou cursores correlacionados?

Muito obrigado por todas as dicas.

questionAnswers(2)

yourAnswerToTheQuestion