compañero de consulta escritores,cursor para actualizar una fila con los valores de las filas anteriores y actuales
Tengo una tabla de la siguiente manera:
myTable t1
col2 col3
2 1
3 0
4 0
5 0
6 0
y quiero actualizar cada cero en col3 con el valor de col3 en la fila anterior más el valor de col2 en la fila actual. Entonces mi mesa querría lo siguiente:
myTable t1
col2 col3
2 1
3 4 (1+3)
4 8 (4+4)
5 13 (5+8)
6 19 (6+13)
Me falta la lógica aquí, miopía quizás. Lo estaba intentando con un cursor de la siguiente manera:
DECLARE @var3 FLOAT
DECLARE cursor3 CURSOR FOR
SELECT col2, col3 FROM table1
FOR UPDATE OF col3
OPEN cursor3
FETCH FIRST FROM cursor3
WHILE (@@FETCH_STATUS > -1)
BEGIN
UPDATE @table1
SET col3 = isnull(@var3, 0) + isnull(col2, 0)
WHERE CURRENT OF cursor3
FETCH NEXT FROM cursor3 INTO @var3
END
pero está mal. Alguna idea?
Gracias de antemano.
¿Tiene otra columna, como una columna de ID en la tabla? los cursores casi nunca son una buena idea ... – JNK
Algunas otras columnas, pero ninguna clave principal. Esta es una tabla temporal para generar informes. Estoy bastante convencido de que existen cursores para problemas como este. –
Los cursores existen para problemas como este, pero eso no significa que sean la mejor solución o la más adecuada. Si agrega una columna de identidad a su tabla temporal, esto se hace 10000 veces más fácil. – JNK