Como usar o Crosstab no Postgre

SQL

PostgreSQL

02/06/2017

Ola,tenho uma duvida referente ao crosstab, pois preciso que cada linha represente uma coluna da tabela produtos com a tabela estoque , a reprodução da primeira linha fique com id de estoque,a segunda linha com id do produto e a terceira com o nome do produto,alguem poderia me apresentar uma base ou uma solução para este problema?
Thiago

Thiago

Curtidas 0

Melhor post

Fabio Parreira

Fabio Parreira

02/06/2017

Segue um site aonde tem vários exemplos.

http://www.vertabelo.com/blog/technical-articles/creating-pivot-tables-in-postgresql-using-the-crosstab-function
GOSTEI 2

Mais Respostas

Thiago

Thiago

02/06/2017

Muito obrigado,mas eu queria um exemplo referente ao crosstab dinâmico, você teria um exemplo ou um site com esse assunto?
GOSTEI 0
Thiago

Thiago

02/06/2017

Segue um site aonde tem vários exemplos.

http://www.vertabelo.com/blog/technical-articles/creating-pivot-tables-in-postgresql-using-the-crosstab-function


tentei esse código, esta correto?

create or replace FUNCTION testeDinamico_crosTab ()
returns character varying(500) As
$$
DECLARE MAXCount int;
begin
SELECT MaxCount = max(Id)
FROM (
SELECT nome
,count(Id) AS Id
FROM dbo.produtos
GROUP BY nome
) X;

DECLARE SQL character varying (500);
d INT;
d:=0;
WHILE d < @MaxCount
BEGIN
SET d := d + 1;
SET SQL := COALESCE(Sql + ', ', '') + 'Col' + cast(d AS character varying(10));
END

SET SQL := N';WITH CTE AS (
SELECT p.ID, p.nome, ''Col'' + CAST(row_number() OVER (PARTITION BY ID ORDER BY nome) AS character varying(10)) AS RowNo
FROM dbo.produtos p
)
SELECT *
FROM CTE
PIVOT (MAX(p.nome) FOR RowNo IN (' + SQL + N')) pvt';

PRINT SQL;

EXECUTE (SQL);
return SQL;
end;
$$
LANGUAGE plpgsql;
GOSTEI 0
POSTAR