el case when tiene que funcionar...
select municipio, indicador,
   sum(case anyo when 2003 then 1 else 0 end) as anyo2003,
   sum(case anyo when 2004 then 1 else 0 end) as anyo2004,
   sum(case anyo when 2005 then 1 else 0 end) as anyo2005
from latabla
group by municipio, indicador

no se que tipo de datos es anyo pero no cambia mucho las cosas.
Saludos

El 11 de mayo de 2009 13:25, Fernando Hevia <fhe...@ip-tel.com.ar> escribió:

>
>
> > -----Mensaje original-----
> > De: pgsql-es-ayuda-ow...@postgresql.org
> > [mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de FRANK RADA
> > Enviado el: Lunes, 11 de Mayo de 2009 12:25
> > Para: pgsql-es-ayuda@postgresql.org
> > Asunto: [pgsql-es-ayuda] Select horizontal
> >
> > Hola gente, estoy escribiendo una consulta la cual me debe
> > ordenar por año los valores de un indicador para un municipio
> > de la siguiente forma, el resultado va a hacer utilizados
> > para crear una capa de charts en mapserver
> >
> > ejemplo de la tabla
> >
> > municipio     indicador       Anyo    Medida_indicador
> > Cucuta        homicidios      2003    1
> > salazar       homicidios      2003    2
> > Cucuta        homicidios      2004    1
> > salazar       homicidios      2004    3
> >
> > ejemplo de la consulta que se desea obtener
> >
> > municipio     Indicador       Anyo2003        Anyo2004
> > Cucuta        Homicidios      1       1
> > salazar       homicidios              2      3
> >
> >
>
> La función crosstab puede ayudarte en tu objetivo.
> Esta viene en el contrib tablefunc.
>
> http://www.postgresql.org/docs/8.3/interactive/tablefunc.html
>
> Saludos.
>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
>    (envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)
>

Responder a