Ok LuNaTk,
El confundido era yo, no leí bien tu descripción e interpreté diferente las cosas... espero esta vez si haberlo entendido como es...
Yo probé la siguiente consulta y me funcionó OK en PosgreSQL
Código SQL
[-]
select *
from (
select *, (select sum(BB.pag_monto) from pago BB where BB.pag_id <= AA.pag_id and BB.pag_status='PENDIENTE') as totalx
from pago AA
where AA.pag_status='PENDIENTE'
) as subquery
where totalx <= 250
Lo que hace recuperar los movimientos mas antiguos que sumen los 250 que buscas o que se aproximen (por debajo a este monto)...
entonces teiendo estos datos:
Código:
pag_id, pag_monto, pag_status
1;10;"PENDIENTE"
2;8;"PENDIENTE"
3;3;"PENDIENTE"
4;12;"OK"
5;60;"PENDIENTE"
6;20;"PENDIENTE"
7;13;"PENDIENTE"
8;8;"OK"
9;9;"PENDIENTE"
10;15;"PENDIENTE"
11;5;"OK"
12;50;"PENDIENTE"
y enviando la consulta para un valor de 81 me retornaría:
Código:
pag_id, pag_monto, pag_status
1;10;"PENDIENTE"
2;8;"PENDIENTE"
3;3;"PENDIENTE"
5;60;"PENDIENTE"
Ahora si quisieras encontrar el número exacto, escogiendo y descartando filas interedias... ahí si te tocaría hacer un procedimiento almacenado o funcion que te ayude....
me refiero a un ejemplo como este:
Tengo los siguientes numeros y busco aquellos que me sumen 94...
60
50
20 OK
15 OK
13 OK
12 OK
10 OK
9
8 OK
8 OK
5 OK
3 OK
Para llegar a este resultado, tuve que ordenarlos (de menor a mayor o al contrario de igual) y luego aplicar un algoritmo que toma y descarta numeros... bueno eso creo, no se si este equivocado