Prezado Matheus,

muito obrigado pela resposta. Vou implementar a sua solução durante essa
semana.

Abraço,
Rômulo.


Em 23 de junho de 2013 14:59, Matheus de Oliveira <[email protected]
> escreveu:

>
> 2013/6/20 Romulo Souza <[email protected]>
>
>> Prezados colegas,
>>
>> a partir da query:
>>
>> SELECT * FROM
>> (
>>  SELECT t.ano,
>>        s.sexo,
>>        SUM(f.qt_obito) obitos
>>   FROM f_sim f
>>   JOIN dim_tempo t ON (t.id=f.id_ano)
>>   JOIN dim_sexo  s ON (s.id=f.id_sexo)
>> GROUP BY t.ano,s.sexo
>> ORDER BY t.ano,s.sexo
>> ) tb1
>>
>> como eu faço para obter uma consulta do tipo linha x coluna? O que
>> preciso: nas linhas os valores dos anos e nas colunas as quantidades de
>> óbitos, segundo sexo. Tentei alterar a query a partir de exemplos que vi
>> utilizando crosstab, mas não fui capaz de resolver o problema. Alguém, por
>> favor, poderia me auxiliar?
>>
>>
> No seu caso, o modo mais fácil usando a função crosstab da tablefunc [1],
> com a variante com dois parâmetros: o primeiro é sua consulta (como já
> definiu), a segunda uma consulta que retorne apenas os sexos (M, F). Dessa
> forma, mesmo que em algum ano não tenha óbitos dos dois sexos, o resultado
> ainda aparecerá (valor null quando não encontrado). Seguindo seu exemplo
> ficaria assim (deve testar):
>
>     SELECT * FROM crosstab($$
>        SELECT t.ano,
>              s.sexo,
>              SUM(f.qt_obito) obitos
>         FROM f_sim f
>         JOIN dim_tempo t ON (t.id=f.id_ano)
>         JOIN dim_sexo  s ON (s.id=f.id_sexo)
>       GROUP BY t.ano,s.sexo
>       ORDER BY t.ano,s.sexo
>     $$, $$VALUES('M'),('F')$$
>     ) AS tb1(ano int, fem int, masc int);
>
>
> [1] http://www.postgresql.org/docs/current/static/tablefunc.html#AEN144882
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a