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

Consulta de saldos..

Estas en el tema de Consulta de saldos.. en el foro de PostgreSQL en Foros del Web. Buenas gente del foro... recurro a ustedes por una curiosidad mas que por una necesidad... Varias veces he tenido que hacer este tipo de consultas... ...
  #1 (permalink)  
Antiguo 14/10/2008, 16:56
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años, 7 meses
Puntos: 6
Consulta de saldos..

Buenas gente del foro... recurro a ustedes por una curiosidad mas que por una necesidad...

Varias veces he tenido que hacer este tipo de consultas... y normalmente me las termino arreglando con algun reporteador (Crystal Reports) para resolver lo que quiero...

Paso a mostrarles un ejemplo, tengo una tabla donde hay un saldo inicial de dinero, se hacen diferentes transacciones con ese dinero en otras tablas, pero el saldo inicial siempre permanece igual. Suponiendo que mi saldo inicial es de 500, tengo que ir restando el monto, y fila a fila ir restando el saldo...

Código:
MONTO   |    SALDO  |
   5                 495
   10               485
   50               435
y asi sucesivamente... como dije el saldo inicial no debe variar. Casi siempre termine llamando al saldo inicial y luego en el crystal reports hago los calculos...

Pero mi duda es.. habria una forma sencilla de hacer ese calculo mediante sql?

Gracias..
__________________
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
  #2 (permalink)  
Antiguo 14/10/2008, 23:37
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 1 mes
Puntos: 58
Respuesta: Consulta de saldos..

Hola que tal, bueno creo que podrias hacerlo utilizando una tabla temporal y un cursor, eso si, si la tabla es muy grande el cursor te haria muy lenta la operacion...

El comando te lo debo no me acuerdo bien pero esta pagina te puede servir http://www.maestrosdelweb.com/editorial/cursql/, pero tienes que tener campos en comun para que sirva....
  #3 (permalink)  
Antiguo 15/10/2008, 02:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta de saldos..

ahi lo llevas Nirvana
Código:
pruebas=# create table saldo (id serial primary key, saldo_inicial integer);
NOTICE:  CREATE TABLE creará una secuencia implícita «saldo_id_seq» para la columna serial «saldo.id»
NOTICE:  CREATE TABLE / PRIMARY KEY creará el índice implícito «saldo_pkey» para la tabla «saldo»
CREATE TABLE
pruebas=# insert into saldo (saldo_inicial) values (500);
INSERT 0 1
pruebas=# create table operaciones (id serial primary key, id_saldo integer references saldo(id), operacion integer);
NOTICE:  CREATE TABLE creará una secuencia implícita «operaciones_id_seq» para la columna serial «operaciones.id»
NOTICE:  CREATE TABLE / PRIMARY KEY creará el índice implícito «operaciones_pkey» para la tabla «operaciones»
CREATE TABLE
pruebas=# insert into operaciones (id_saldo, operacion) values (1, 10);
INSERT 0 1
pruebas=# insert into operaciones (id_saldo, operacion) values (1, 20);
INSERT 0 1
pruebas=# insert into operaciones (id_saldo, operacion) values (1, 5);
INSERT 0 1
pruebas=# insert into operaciones (id_saldo, operacion) values (1, -100);
INSERT 0 1
pruebas=# select * from operaciones;
 id | id_saldo | operacion
----+----------+-----------
  1 |        1 |        10
  2 |        1 |        20
  3 |        1 |         5
  4 |        1 |      -100
(4 filas)


pruebas=# select saldo_inicial, operacion, saldo_inicial + (select sum(operacion) from operaciones op where op.id <= o.id) as saldo_resultante from operaciones o join saldo s on o.id_saldo = s.id;
 saldo_inicial | operacion | saldo_resultante
---------------+-----------+------------------
           500 |        10 |              510
           500 |        20 |              530
           500 |         5 |              535
           500 |      -100 |              435
(4 filas)
Salu2
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 14:24.