El 24/05/2012 11:05, Conrado Blasetti escribió:
Anthony, gracias por responder.
Justamente, cuando aplicamos el where, el sistema me devuelve solo el
período seleccionado y no acumulando lo de períodos anteriores. Lo que
necesitaría es (si es posible) resolver en el mismo sql la agrupación
anterior, el detalle y la agrupación posterior
*De:* Anthony [mailto:[email protected]]
*Enviado el:* jueves, 24 de mayo de 2012 12:03
*Para:* Conrado Blasetti
*CC:* [email protected]
*Asunto:* Re: [pgsql-es-ayuda] Funcion ventana nueva consulta
El 24/05/2012 9:45, Conrado Blasetti escribió:
Julio, muchas gracias por responder.
Ahora, se me plantea una nueva duda con respecto a la sentencia
(perdón por no haberla expuesto en el msg anterior)
Teniendo los datos de esta manera (se agrega una fecha)
drop table foo;
create table foo (
id serial not null,
tipo numeric(10) not null,
fecha date not null,
imp numeric(10,2) not null,
CONSTRAINT foo_id PRIMARY KEY (id)
);
insert into foo (fecha,tipo, imp) values ('01/01/2012'::date,1,30.5);
insert into foo (fecha,tipo, imp) values ('02/01/2012'::date,1,20.25);
insert into foo (fecha,tipo, imp) values ('03/01/2012'::date,2,30);
insert into foo (fecha,tipo, imp) values ('04/01/2012'::date,1,75.3);
insert into foo (fecha,tipo, imp) values ('05/01/2012'::date,1,75.3);
insert into foo (fecha,tipo, imp) values ('06/01/2012'::date,2,100);
insert into foo (fecha,tipo, imp) values ('15/04/2012'::date,1,30.5+7);
insert into foo (fecha,tipo, imp) values ('16/04/2012'::date,1,20.25+7);
insert into foo (fecha,tipo, imp) values ('17/04/2012'::date,2,30+7);
insert into foo (fecha,tipo, imp) values ('18/04/2012'::date,1,75.3+7);
insert into foo (fecha,tipo, imp) values ('19/04/2012'::date,1,75.3+7);
insert into foo (fecha,tipo, imp) values ('20/04/2012'::date,2,100+7);
insert into foo (fecha,tipo, imp) values ('22/05/2012'::date,1,30.5+17);
insert into foo (fecha,tipo, imp) values ('22/05/2012'::date,1,20.25+17);
insert into foo (fecha,tipo, imp) values ('23/05/2012'::date,2,30+17);
insert into foo (fecha,tipo, imp) values ('23/05/2012'::date,1,75.3+17);
insert into foo (fecha,tipo, imp) values ('24/05/2012'::date,1,75.3+17);
insert into foo (fecha,tipo, imp) values ('24/05/2012'::date,2,100+17);
SQL agregando la fecha.
select fecha,tipo1, tipo2, sum(imp) over (order by id)
from (select id, fecha, imp as tipo1, 0 as tipo2, imp
from foo
where tipo= 1
union
select id, fecha, 0 as tipo1, imp as tipo2, imp*-1
from foo
where tipo= 2) Aux
La consulta es, cómo hacer para obtener datos "semi" detallados?
Digamos, quiero ver el detalle del mes 4, debería ejecutar el sql con
el where correspondiente.
Pero el tema es que, la columna SUM, me acumula sobre los registros
del where (es lógico porque es lo que le pido), estaría necesitando un
acumulado de imp1 imp2 y sum() para lo anterior a abril, que se
muestre el detalle de abril movimiento por movimiento (pero que el
acumulado sume lo anterior) y luego otro acumulado de todo lo que hay
después de abril de forma resumida, en este caso, todo ordenado por
fecha, mostrando algo asi:
fecha
imp1
imp2
acumulado
tipo
null
201,35
130
71,35
RESUMEN
15/04/2012
37,5
108,85
detalle
16/04/2012
27,25
136,1
detalle
17/04/2012
37
99,1
detalle
18/04/2012
82,3
181,4
detalle
19/04/2012
82,3
263,7
detalle
20/04/2012
107
156,7
detalle
null
269,35
164
262,05
RESUMEN
Se podrá resolver también?
Nuevamente, gracias
Saludos,
Conrado
<http://www.uci.cu/>
bueno agrégale esto al final y ya
where fecha between '2012-04-01' and '2012-04-30'
;-)
saludos
<http://www.uci.cu/>
<http://www.uci.cu/>
bueno tendras que hacer algo asi como:
(select null::date as fecha,tipo1, tipo2, sum(imp) over (order by id),
'Resumen'::text
from (select id, fecha, imp as tipo1, 0 as tipo2, imp
from foo
where tipo= 1
union
select id, fecha, 0 as tipo1, imp as tipo2, imp*-1
from foo
where tipo= 2) as Aux
where fecha <= '2012-04-01' order by fecha desc limit 1)
union all
(select fecha,tipo1, tipo2, sum(imp) over (order by id), 'Detalle'::text
from (select id, fecha, imp as tipo1, 0 as tipo2, imp
from foo
where tipo= 1
union
select id, fecha, 0 as tipo1, imp as tipo2, imp*-1
from foo
where tipo= 2) Aux
where fecha between '2012-04-01' and '2012-04-30')
union all
(select null::date as fecha,tipo1, tipo2, sum(imp) over (order by
id), 'Resumen'::text
from (select id, fecha, imp as tipo1, 0 as tipo2, imp
from foo
where tipo= 1
union
select id, fecha, 0 as tipo1, imp as tipo2, imp*-1
from foo
where tipo= 2) as Aux
where fecha >= '2012-04-30' order by fecha desc limit 1)
-- order by fecha desc
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