Em 29 de setembro de 2011 14:14, Thiago <[email protected]> escreveu:
> Pessoal, bom dia.
>
> Tenho a seguinte tabela:
>
> CREATE TABLE CRFOO (NOME VARCHAR(1),DATA DATE,QTD INTEGER);
> INSERT INTO CRFOO VALUES ('A','01/09/2011',1);
> INSERT INTO CRFOO VALUES ('A','02/09/2011',2);
> INSERT INTO CRFOO VALUES ('A','03/09/2011',1);
> INSERT INTO CRFOO VALUES ('A','04/09/2011',2);
> INSERT INTO CRFOO VALUES ('B','01/09/2011',1);
> INSERT INTO CRFOO VALUES ('B','02/09/2011',2);
> INSERT INTO CRFOO VALUES ('B','03/09/2011',1);
>
> Quando utilizo crosstab, para por exemplo, trazer 3 dias, faço da
> seguinte forma:
>
> SELECT *
> FROM CROSSTAB('
> SELECT *
> FROM CRFOO
> WHERE DATA BETWEEN ''01/09/2011'' AND ''03/09/2011'''
> ) AS (
> NOME VARCHAR(1),
> DIA1 INTEGER,
> DIA2 INTEGER,
> DIA3 INTEGER
> )
>
> Dessa forma funciona, o problema é que eu coloquei 3 dias no retorno
> pois fixei 3 dias no período de busca.
> Como devo proceder quando esse período for dinâmico?
>
> Não existe uma forma dinâmica de configurar as colunas de retorno?

Dependendo do "quão" dinamicamente você pode criar alguns TYPE no
formato tablefunc_crosstab_N e utilizar crosstabN. Conforme [1] isto é
possível, apesar de não muito 'elegante' para alguns mas, dependendo
da frequência e consumo que esta consulta pode te causar, é possivel
montar isso dinamicamente. Faça aguns testes e nos reporte o
resultado.

[1] http://www.postgresql.org/docs/9.1/static/tablefunc.html#AEN136350
-- 
Dickson S. Guedes
mail/xmpp: [email protected] - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a