Con un query sencillo no sale lo que necesitas, seria hacer un procedure o funcion, algo como esto:
Código SQL:
Ver originalCREATE TABLE #temp
(
semana INT,
productos INT,
acumulado INT
)
INSERT INTO #temp (semana,productos) VALUES (1,1)
INSERT INTO #temp (semana,productos) VALUES (2,3)
INSERT INTO #temp (semana,productos) VALUES (3,5)
INSERT INTO #temp (semana,productos) VALUES (4,3)
INSERT INTO #temp (semana,productos) VALUES (5,6)
SELECT *, IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp
DECLARE @x INT
DECLARE @acumulado INT
DECLARE @producto INT
SET @x=1
while @x<=(SELECT COUNT(*) FROM #temp2)
BEGIN
SELECT @producto=productos FROM #temp2 WHERE rn=@x
IF (@x=1)
SELECT @acumulado=productos FROM #temp2 WHERE rn=1
ELSE
SET @acumulado=@acumulado + @producto
UPDATE #temp2 SET acumulado=@acumulado WHERE rn=@x
SET @x=@x+1
END
SELECT semana,productos,acumulado FROM #temp2
Resultado:
semana productos acumulado
1 1 1
2 3 4
3 5 9
4 3 12
5 6 18