Funcion ventana

From: Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Funcion ventana
Date: 2012-05-24 11:24:25
Message-ID: 73A3A527647BB24F9587AA69EC1A4E16113A1823@sar001241.Mapfre.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gente, Buenos días.

Tengo una vista de movimientos debe/haber, facturas/pagos donde están tengo importes y el tipo de movimiento de cada uno.
Creo que con funciones ventana se podría sacar el acumulado por registro, pero no doy en la tecla.

Este es un ejemplo simplificado para realizar el select:

El campo tipo, es el tipo de movimiento que, cuando es 1, debería sumar el importe, si es 2, debería restar.

drop table foo;

create table foo (
id serial not null,
tipo numeric(10) not null,
imp numeric(10,2),
CONSTRAINT foo_id PRIMARY KEY (id)
);

insert into foo (tipo, imp) values (1,30.5);
insert into foo (tipo, imp) values (1,20.25);
insert into foo (tipo, imp) values (2,30);
insert into foo (tipo, imp) values (1,75.3);
insert into foo (tipo, imp) values (1,75.3);
insert into foo (tipo, imp) values (2,100);

select * from foo;

1;1;30.50
2;1;20.25
3;2;30.00
4;1;75.30
5;1;75.30
6;2;100.00

La consulta debería mostrar al asi:

TIPO 1 TIPO 2 SALDO
30.5 0 30.5
20.25 0 50.75
0 30 20.75
75.3 0 96.05
75.3 0 171.35
0 100 75.35

La columna Saldo, sería el acumulado de la diferencia de la suma de TIPO 1, menos TIPO2.

Bueno, esto creo que se puede hacer en una misma sentencia sql, pero se me está complicando, me darán una mano para armarla?

Desde ya, gracias

Saludos,
Conrado

Usando Postgresql 9.0

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Julio Cesar Diaz Vera 2012-05-24 12:18:36 Re: Funcion ventana
Previous Message JHONATAN CANO FURAGARO 2012-05-23 22:28:34 Re: PostGis For Postgresql