Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/10/2008, 02:21
seyko
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 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