Como usar o Crosstab no Postgre

02/06/2017

0

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

Responder

Post mais votado

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

Fabio Parreira

Fabio Parreira
Responder

Mais Posts

04/06/2017

Thiago

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

04/06/2017

Thiago

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;
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar