Calcular saldo sobre una misma tabla

05/09/2005 - 14:59 por Pablodegerli | Informe spam
Hola gente
Tengo esta tabla que la cargo desde un proceso con los 2 campos mas
importantes de Ingreso y Egreso.
Lo que debo es ir calculando en el campo Saldo la diferencia entre los
Ingresos - Egresos hasta la fecha del registro.

Create Table Tmp(Fecha_Hora smalldatetime, NºComprobante int, NºLinea
smallint, Lote int, Pcb smallint, Pedido smallint, Ingreso smallint, Egreso
smallint, Saldo smallint)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-05-02 01:15:00',4,1,21,6,334,167,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-05-03 15:07:10',5,1,29,6,167,167,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-07-01 12:25:15',6,1,12,6,200,50,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-07-01 21:05:52',25,1,1,6,200,0,140,0)

Fecha_Hora NºComprobante NºLinea
Lote Pcb Pedido Ingreso Egreso Saldo
2005-02-05 01:15:00 4 1
21 6 334 167 0 0
2005-03-05 15:07:00 5 1
29 6 167 167 0 0
2005-01-07 12:25:00 6 1
12 6 200 50 0 0
2005-01-07 21:06:00 25 1
1 6 200 0 140 0

Trate de realizarlo de la siguiente manera

Update Tmp set Saldo = (Select sum(Ingreso) - sum(Egreso) from Tmp T2 where
T2.Fecha <= Fecha )

Pero evidentemente me actualiza todos porque no le estoy poniendo el filtro
para el update pero no puedo hacerlo con T2 porque es una subconsulta.


Como siempre, Gracias de antemano
 

Leer las respuestas

#1 Sandro
05/09/2005 - 15:37 | Informe spam
y porque no lo haces por cada fila cuando INSERTAS los datos ?, o no estoy
entendiendo bien ?



"Pablodegerli" escribió en el mensaje
news:%
Hola gente
Tengo esta tabla que la cargo desde un proceso con los 2 campos mas
importantes de Ingreso y Egreso.
Lo que debo es ir calculando en el campo Saldo la diferencia entre los
Ingresos - Egresos hasta la fecha del registro.

Create Table Tmp(Fecha_Hora smalldatetime, NºComprobante int, NºLinea
smallint, Lote int, Pcb smallint, Pedido smallint, Ingreso smallint,
Egreso
smallint, Saldo smallint)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-05-02 01:15:00',4,1,21,6,334,167,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-05-03 15:07:10',5,1,29,6,167,167,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-07-01 12:25:15',6,1,12,6,200,50,0,0)
Insert into Tmp(Fecha_Hora, NºComprobante, NºLinea, Lote, Pcb, Pedido,
Ingreso, Egreso, Saldo)
values('2005-07-01 21:05:52',25,1,1,6,200,0,140,0)

Fecha_Hora NºComprobante
NºLinea
Lote Pcb Pedido Ingreso Egreso Saldo
2005-02-05 01:15:00 4 1
21 6 334 167 0 0
2005-03-05 15:07:00 5 1
29 6 167 167 0 0
2005-01-07 12:25:00 6 1
12 6 200 50 0 0
2005-01-07 21:06:00 25 1
1 6 200 0 140 0

Trate de realizarlo de la siguiente manera

Update Tmp set Saldo = (Select sum(Ingreso) - sum(Egreso) from Tmp T2
where
T2.Fecha <= Fecha )

Pero evidentemente me actualiza todos porque no le estoy poniendo el
filtro
para el update pero no puedo hacerlo con T2 porque es una subconsulta.


Como siempre, Gracias de antemano


Preguntas similares