2012/8/31 Matheus de Oliveira <[email protected]>
>
> 2012/8/31 Rubens José Rodrigues <
> [email protected]>
>
>> 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)
>
>
Ou então, fazendo o cross-tab pelo nome:
postgres=# select *
from crosstab('select data,nome,qtde from teste order by 1,2')
as buteco(data date,leo int, rubens int);
data | leo | rubens
------------+-----+--------
2012-08-30 | 3 | 3
2012-08-31 | 1 | 1
2012-09-01 | 2 | 2
(3 rows)
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral