hola grupo,
Solucioné el problema que expongo a continuación, pero usando un cursor, lo
cual he visto con mucha frecuencia en este foro que no es la manera más
recomendable por rendimiento. Lo que estoy buscando es una manera de hacerlo
que mejore la velocidad de ejecución. Inicialmente pensé que era muy
sencillo con un UPDATE pero me he vuelto un ocho y no he podido, por eso
recurro a ustedes.
Definicion de la Tabla:
create table #Test ( IdReg int , Sa int Null , Incremento int , Sf int
Null )
insert into #test values ( 1 , 10 , 1 , null )
insert into #test values ( 2 , null, 5 , null )
insert into #test values ( 3 , null, 2 , null )
insert into #test values ( 4 , null, 1 , null )
Donde:
IdReg : Llave primaria, establece el orden de los registros.
Sa: Valor Acumulado anterior o saldo anterior. Para el primer registro es un
valor conocido, para los siguientes registros es igual al valor del Sf del
registro anterior. Por ejemplo, para el registro número 2 el valor de Sa es
igual al valor de Sf del registro nímero 1.
Incremento : un valor de incremento que ya esta en la tabla
Sf: valor acumulado final, saldo final --> Sf = Sa + Incremento
Contenido de la tabla original
Sa Incremento Sf
10 1 ?
? 5 ?
? 2 ?
? 1 ?
lo que debe hacer el update es calcular el saldo final (Sf) sumando Sa +
Incremento, teneiendo en cuenta que Sa es igual a Sf del registro anterior
Sa Incremento Sf
10 1 11
11 5 16
16 2 18
18 1 19
mil gracias
Eusebio
Leer las respuestas