Ver Mensaje Individual
  #1  
Antiguo 04-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

Buenas Compañeros disculpen is revivo un viejo Hilo.

Pero venía usando una sentencia como la que mencionaban arriba


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.id asc

Cuyo resultado es correcto: por ej

Cita:
ID FECHA CLI DEBE HABER SALDO
80 2019-08-27 11 16037 0 16037
81 2019-08-27 11 16552 0 32589
82 2019-08-27 11 2800 0 35389
131 2019-08-29 11 1610 0 36999
261 2019-09-03 11 2170 0 39169
273 2019-09-14 11 0 169 39000
274 2019-09-01 11 0 150 38850
275 2019-09-12 11 0 100 38750
Pero me surge la necesidad de ordenar los registros por fecha y no por ID.
Perfecto, cambir el Order pero la suma de saldo no se calcula bien ya que si se agregan registros de fechas anteriores, el ID será mayor a los ID de la fechas anteriores y computará mal los saldos.

Aquí resultado de la misma consulta cn ORDER BY FECHA

Cita:
ID FECHA CLI DEBE HABER SALDO
80 2019-08-27 11 16037 0 16037
81 2019-08-27 11 16552 0 32589
82 2019-08-27 11 2800 0 35389
131 2019-08-29 11 1610 0 36999
274 2019-09-01 11 0 150 38850
261 2019-09-03 11 2170 0 39169
275 2019-09-12 11 0 100 38750
273 2019-09-14 11 0 169 39000

En la clausula ON he probado poniendo on ((c1.fecha <= c2.fecha)and (C1.id >= C2.id))
Pero el resultado es erroneo igual al anterior.

Gracias por su tiempo
Responder Con Cita