André,

Faltou especificar a ordenação no segundo parâmetro do crosstab e
especificar descrição no lugar do produto:

Select * from crosstab (
                                   $$select bolsa,*descricao*,qtdade from
fraciona
                                       inner join tproduto on
tproduto.codigo = fraciona.produto
                                       order by bolsa
                                   $$,
                                  * $$SELECT
unnest(ARRAY['Hemacia','Plaqueta','Plasma'])$$*
                                  ) as resultado ("Bolsa" text,"Hemacia"
int,"Plaqueta" int,"Plasma" int);

Att.

2016-02-18 17:32 GMT-02:00 André Ormenese <[email protected]>:

> Boa tarde pessoal.
>
> Vou dar um exemplo de consulta em cross-tab que gostaria de fazer, e vejam
> se é possível.
>
> Tenho duas tabelas, uma com código e descrição de produtos do sangue, e
> outra que armazena os dados de resultados de bolsas de sangue fracionada.
>
> Uma bolsa fracionada pode gerar um ou mais produtos.
>
> A tabela1 tem os dados :
> (código, descrição)
>     1 -      Hemacia
>     2 -      Plaqueta
>     3 -      Plasma
>
> A tabela2 o fracionamento de cada bolsa de sangue :
>  (bolsa, produto, qtdade)
>     b1        1          100
>     b1        2          135
>     b1        3          150
>     b2        1          200
>     b2        3          167
>
> Queria fazer uma consulta que me mostrasse os produtos na coluna correta
> do cross-tab, assim :
>
> Bolsa   Hemacia   Plaqueta   Plasma
>    b1        100           135          150
>    b2        200                          167
>
> Só consigo este resultado :
> Bolsa   Hemacia   Plaqueta   Plasma
>    b1        100           135          150
>    b2        200           167
>
>
> Estou executando :
>
> Select * from crosstab (
> 'select bolsa,produto,qtdade from fraciona
> inner join tproduto on tproduto.codigo = fraciona.produto
> order by bolsa') as resultado("Bolsa","Hemacia","Plaqueta","Plasma");
>
> A solução é fazer que a consulta interna do cross-tab gere uma linha assim
> :
>     b2        2          null
>
> Já tentei com right join mas não funcionou.
>
> Alguma ideia ?
>
>
>
>
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Matheus Ricardo Espanhol
---------------------------------------
Dextra Sistemas
http://www.dextra.com.br/postgres
www.pganalytics.io
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a