| From: | Julio Cesar Diaz Vera <jcdiaz(at)uci(dot)cu> | 
|---|---|
| To: | pgsql-es-ayuda(at)postgresql(dot)org | 
| Subject: | Re: Funcion ventana | 
| Date: | 2012-05-24 12:18:36 | 
| Message-ID: | 4FBE271C.3090606@uci.cu | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-es-ayuda | 
Conrado con esta consulta obtienes el resultado que deseas. Resalto el 
uso de la ventana para realizar la suma acumulada de cada caso
Saludos
   Julio
/select tipo1, tipo2,*sum(imp) over (order by id)* from (select id, imp 
as tipo1, 0 as tipo2, imp from foo where tipo= 1 union select id, 0 as 
tipo1, imp as tipo2, imp*-1 from foo where tipo= 2)Aux/
El 5/24/2012 7:24 AM, Conrado Blasetti escribió:
>
> 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
>
>
>
> <http://www.uci.cu/>
10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION
http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Conrado Blasetti | 2012-05-24 13:45:25 | Funcion ventana nueva consulta | 
| Previous Message | Conrado Blasetti | 2012-05-24 11:24:25 | Funcion ventana |