Ayuda con una consulta ............

17/05/2006 - 00:06 por jpablos | Informe spam
Saludos .

Tengo una consulta para ver como mejorar un query:

tengo la siguiente variable:

@saldo_actual = @saldo_anterior - @debitos + @creditos

digamos que mi saldo actual es de 200

tengo en una tabla temporal lo siguente

codigo descripcion ingreso egreso saldo
1 biela 10 0 0
1 biela 10 0 0
1 biela 0 10 0
1 biela 0 15 0


lo que tengo que hacer es lo siguiente el valor que tiene la variable
@saldo_actual
debe sumar o restar a campo de ingreso o egreso y el resultado ponerlo en la
columna
de saldo con lo que mi tabla quedaria asi:

/* comienzo sumando 200 + 10 al primer registro y mi resultado que es */
210 lo debo sumar o restar al siguiente registro y asi susecivamente

codigo descripcion ingreso egreso saldo
1 biela 10 0 210
1 biela 10 0 220
1 biela 0 10 210
1 biela 0 15 195


lo que yo hago es un cursor que se recorra toda la tabla y haga un update
registro por registro
pero cuando son pocos registros no se demora mucho, pero hay casos en los
que las transacciones
por producto llegan a los 180 mil registros y se me demora una eternidad

Me pueden dar una sugerencia de como poder sacar el saldo sin utilizar un
cursor, u otra
manera para que se ejecute mas rapido

Gracias ..
 

Leer las respuestas

#1 Isaias
17/05/2006 - 01:03 | Informe spam
Debe ser la misma logica:


use northwind
go

create table #t1 (
Codigo varchar(15) not null unique,
Detalle varchar(25),
Importe money,
Porcentaje decimal (5, 2)
)
go

insert into #t1 values('11111', 'xxxxxx', 100.00, 5.5)
insert into #t1 values('88888', 'yyyyyy', 55.50, 4.8)
insert into #t1 values('33333', 'aaaaaa', 55.00, 4.8)
insert into #t1 values('99999', 'wweew', 40.00, 4.0)
go

select
a.codigo, a.detalle, a.importe, a.porcentaje,
sum(b.porcentaje) as porcentaje_acumulado
from
#t1 as a
left join
#t1 as b
on a.porcentaje < b.porcentaje
or (a.porcentaje = b.porcentaje and a.codigo >= b.codigo)
group by
a.codigo, a.detalle, a.importe, a.porcentaje
order by
a.porcentaje desc, a.codigo
go

drop table #t1
go
Saludos
IIslas


"jpablos" wrote:

Saludos .

Tengo una consulta para ver como mejorar un query:

tengo la siguiente variable:

@saldo_actual = @saldo_anterior - @debitos + @creditos

digamos que mi saldo actual es de 200

tengo en una tabla temporal lo siguente

codigo descripcion ingreso egreso saldo
1 biela 10 0 0
1 biela 10 0 0
1 biela 0 10 0
1 biela 0 15 0


lo que tengo que hacer es lo siguiente el valor que tiene la variable
@saldo_actual
debe sumar o restar a campo de ingreso o egreso y el resultado ponerlo en la
columna
de saldo con lo que mi tabla quedaria asi:

/* comienzo sumando 200 + 10 al primer registro y mi resultado que es */
210 lo debo sumar o restar al siguiente registro y asi susecivamente

codigo descripcion ingreso egreso saldo
1 biela 10 0 210
1 biela 10 0 220
1 biela 0 10 210
1 biela 0 15 195


lo que yo hago es un cursor que se recorra toda la tabla y haga un update
registro por registro
pero cuando son pocos registros no se demora mucho, pero hay casos en los
que las transacciones
por producto llegan a los 180 mil registros y se me demora una eternidad

Me pueden dar una sugerencia de como poder sacar el saldo sin utilizar un
cursor, u otra
manera para que se ejecute mas rapido

Gracias ..

Preguntas similares