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
