> Matheus de Oliveira

 

> Tempos atrás eu tentei usar essa função [I] que vem no tablefunc, todavia
me

> esbarrei no problema abaixo, será que alguém consegue me ajudar?

 

> Versão : PostgreSQL 9.0.5 on x86_64-pc-linux-gnu, compiled by GCC

> gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 64-bit

 

 

> /* Código */

> create table teste(nome varchar(10), data date, qtde int);

> insert into teste values ('RUBENS',CURRENT_DATE,1);

> insert into teste values ('RUBENS',CURRENT_DATE+1,2);

> insert into teste values ('RUBENS',CURRENT_DATE-1,3);

> insert into teste values ('LEO',CURRENT_DATE,1);

> insert into teste values ('LEO',CURRENT_DATE+1,2);

> insert into teste values ('LEO',CURRENT_DATE-1,3);

 

> select *

>  from crosstab('select nome,data,qtde from teste order by nome')

>      as buteco(nome varchar(10),data date,qtde integer)

 

> Erro :

> Function Scan on crosstab ct  (cost=0.00..10.00 rows=1000 width=46)

> LOG:  duração: 0.054 ms  comando: SET DateStyle TO 'ISO'

> ERRO:  return and sql tuple descriptions are incompatible

 

> Qual o resultado que você está esperando? Não dá pra adivinhar pelo que
escreveu, mas eu diria o seguinte:

 

> postgres=# select *

>  from crosstab('select nome,data,qtde from teste order by 1,2')

>      as buteco(nome varchar(10),hoje int,amanha int,depois_amanha int);

 

>  nome  | hoje | amanha | depois_amanha 

> --------+------+--------+---------------

> LEO          |    3 |      1 |             2

> RUBENS |    3 |      1 |             2

> (2 rows)

 

 

Obrigado pela resposta.

Minha idéia de resultado seria :

 

NOME       | '30/08/2012'  | '31/08/2012' | '01/09/2012'       

LEO             |                     3    |                     1   |
2

RUBENS    |                     3    |                     1   |
2

 

 

Rubens

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a