Ver Mensaje Individual
  #9  
Antiguo 17-10-2019
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Reputación: 20
amadis Va por buen camino
Hacer columna saldo acumulado SQL Firebird 3

Que tal queridos compañeros.

Abro este post buscando ayuda con un tema que se ha mencionado en un par de ocasiones, que es como crear una columna que acumule saldos de cuenta.

Con la siguiente sentencia creo un extracto de cuenta, donde se visualizan, las fechas del movimiento, y el importe que acredita o debita.
Y la idea es que se vaya calculando el saldo de la cuenta parcial en cada registro.

Código SQL [-]
Select c1.id, c1.fecha, c1.cliente, c1.DEBE, C1.HABER,Sum(C2.DEBE-C2.HABER)as SALDO
from CTACTE C1
inner join CTACTE C2
on (C1.id >= C2.id)
where (c1.cliente = :cli and c2.cliente = :cli )and c1.fecha >= :f
Group By c1.fecha,c1.id, c1.cliente, c1.DEBE, C1.HABER
Order by c1.fecha

La sentencia anterior lo consigue perfectamente, pero aparece el de que si ORDENO POR FECHA, y si se cargan fechas anteriores luego de la fecha de hoy por ej. Los registros se ordenan por ID y el saldo se calcula por el ID mientras que los registros de muestran por fecha y no conciden.


Aqui pego un ejemplo con numeros de lo que da esta sentencia. EL SALDO FINAL DEBE SER 480

Cita:
ID FECHA CLI DEBE HABER SALDO
80 2019-08-27 11 120 0 120
81 2019-08-27 11 50 0 170
82 2019-08-27 11 250 0 420
131 2019-08-29 11 300 0 720
274 2019-09-01 11 0 150 580
261 2019-09-03 11 30 0 750
275 2019-09-12 11 0 100 480
273 2019-09-14 11 0 20 730
En cambio los saldos son correctos si se ordena por ID, pero se agregaron fechas anteriores con ID posteriores no queda ordenado bien por fecha y complica la visión

Así queda orden por ID, los saldos quedan bien ordenados pero no las fechas y los movimientos

Cita:

ID FECHA CLI DEBE HABER SALDO

80 2019-08-27 11 120 0 120
81 2019-08-27 11 50 0 170
82 2019-08-27 11 250 0 420
131 2019-08-29 11 300 0 720
261 2019-09-03 11 30 0 750
273 2019-09-14 11 0 20 730
274 2019-09-01 11 0 150 580
275 2019-09-12 11 0 100 480
El compañero
Cita:
Empezado por mamcx
había mencionado que esto se puede resolver con CTE (https://firebird21.wordpress.com/201...le-expression/
Pero no he logrado que funcione.


Gracias a todos por su tiempo
Responder Con Cita