Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Crear consulta que acumule saldo en cada registro

Estas en el tema de Crear consulta que acumule saldo en cada registro en el foro de SQL Server en Foros del Web. Estimados: Necesito agregar a ésta consulta un campo Saldo que en cada registro vaya calculando un saldo acumulado, donde sume los ingresos y reste los ...
  #1 (permalink)  
Antiguo 14/08/2009, 15:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Pregunta Crear consulta que acumule saldo en cada registro

Estimados:

Necesito agregar a ésta consulta un campo Saldo que en cada registro vaya calculando un saldo acumulado, donde sume los ingresos y reste los egresos.

Por ejemplo:

Número de Documento Glosa Fecha Concilia Ingreso Egreso Saldo
09876 Depósito 11/8/2009 350000 0 350000
345678 Caja Chica 13/8/2009 0 45000 305000
23456786 Papelería 13/8/2009 0 14000 291000

Hice éste query pero como ven no puedo hacer el último campo llamado Saldo


SELECT Movimientos.[Número de Documento], Movimientos.Glosa, Movimientos.[Fecha Concilia], Movimientos.[Debe] AS Ingreso, Movimientos.[Haber] AS Egreso FROM Movimientos

GRacias
  #2 (permalink)  
Antiguo 14/08/2009, 15:40
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Crear consulta que acumule saldo en cada registro

No se puede ir acumulando valores entre registros de forma directa en un select, te saldria mas facil calcularlo del lado del cliente porque tendrias que hacer in ciclo y sql server no trabaja bien con ciclos...


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 14/08/2009, 15:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Crear consulta que acumule saldo en cada registro

Andres95 tiene razon, tal vez si son ciclos muy grandes, puedes hacerlo en el front, checa este codigo, tal vez sirva para ciclos cortos:

Create Table Tmp(
Fecha_Hora smalldatetime,
No_Comprobante int,
No_Linea smallint,
Lote int,
Pcb smallint,
Pedido smallint,
Ingreso smallint,
Egreso smallint,
Saldo smallint
)
go

Insert into Tmp values('2005-05-02 01:15:00',4,1,21,6,334,167,0,0)
Insert into Tmp values('2005-05-03 15:07:10',5,1,29,6,167,167,0,0)
Insert into Tmp values('2005-07-01 12:25:15',6,1,12,6,200,50,0,0)
Insert into Tmp values('2005-07-01 21:05:52',25,1,1,6,200,0,140,0)
go

select * from Tmp


select
a.fecha_hora,
a.ingreso,
a.egreso,
sum(b.ingreso - b.egreso) as saldo
from
tmp as a
inner join
tmp as b
on b.Fecha_Hora <= a.Fecha_Hora
group by
a.fecha_hora,
a.ingreso,
a.egreso
order by
1 asc
go

drop table tmp
go
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.