Impresionante Oswaldo! Gracias.

Entre'nos... total no se entera nadie... No sabes lo problemático que fue la 
version anterior de este proyecto que estoy migrando, era en Access y 
cristal... codigo, parámetros, funciones de grupo, sumarizaciones, hardcodeo, 
etc, un calvario!

Gracias de nuevo.
Saludos,
Conrado

-----Mensaje original-----
De: Oswaldo Hernández [mailto:[email protected]] 
Enviado el: Viernes, 20 de Febrero de 2009 01:20 p.m.
Para: Conrado Blasetti
CC: [email protected]
Asunto: Re: [pgsql-es-ayuda] Reporte sql semi-offtopic

Conrado Blasetti escribió:
...
> 
> Mas o menos lo que necesito, pero no logro que me agrupe en una sola linea
> Por ejemplo, los 3 primeros registros por periodo y cuota (1 ANTERIRO y C1), 
> sumarizando los niveles. O Sea, que me quede:
> 
> "1 ANTERIOR";"C1";10;45;0.00
> "1 ANTERIOR";"C2";10.00;0.00;20.00
> 
> Eso si, quiero hacerlo en este mismo query, por que puede resolverse haciendo:
> 

Prueba con:

SELECT
     CASE
         WHEN SUBSTRING(periodo::VARCHAR,1,4)::NUMERIC < 2009 THEN '1 ANTERIOR'
         WHEN SUBSTRING(periodo::VARCHAR,1,4)::NUMERIC = 2009 THEN '2 ACTUAL'
         ELSE '3 SIGUIENTE'
     END AS periodo,
     cuota,
     SUM(CASE WHEN tipo='J' THEN valor ELSE 0.00 END) as jardin,
     SUM(CASE WHEN tipo='P' THEN valor ELSE 0.00 END) as primaria,
     SUM(CASE WHEN tipo='S' THEN valor ELSE 0.00 END) as secundaria
FROM foo
GROUP BY
     CASE
         WHEN SUBSTRING(periodo::VARCHAR,1,4)::NUMERIC < 2009 THEN '1 ANTERIOR'
         WHEN SUBSTRING(periodo::VARCHAR,1,4)::NUMERIC = 2009 THEN '2 ACTUAL'
         ELSE '3 SIGUIENTE'
     END,
     cuota

ORDER BY 1,2



Saludos,
-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
--
TIP 4: No hagas 'kill -9' a postmaster

Responder a