Problema com Pivot
28/10/2015
0
Prezados,
Estou realizando o pivot, mas tive um problema.
O código abaixo se trata de uma tabela de cotações onde o pivot acontece na coluna C8_FORNECE até ai tudo bem.
Mas em algumas situações acontece de um cliente ter mais de uma cotação, como é necessário definir um agrupador para o pivot, inicialmente filtrei pelo menor valor, mas desta forma não consigo visualizar as outras cotações de um mesmo fornecedor.
Algo que possa ser feito?
Desde já agradeço.
Essa dúvida foi gerada a partir de um comentário no artigo PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Estou realizando o pivot, mas tive um problema.
O código abaixo se trata de uma tabela de cotações onde o pivot acontece na coluna C8_FORNECE até ai tudo bem.
Mas em algumas situações acontece de um cliente ter mais de uma cotação, como é necessário definir um agrupador para o pivot, inicialmente filtrei pelo menor valor, mas desta forma não consigo visualizar as outras cotações de um mesmo fornecedor.
Algo que possa ser feito?
Desde já agradeço.
DECLARE @ColunasPivot VARCHAR(8000) DECLARE @GrupoPivot NVARCHAR(MAX) SELECT @ColunasPivot = COALESCE(@ColunasPivot + ',[' + CAST(C8_FORNECE AS VARCHAR) + ']', '[' + CAST(C8_FORNECE AS VARCHAR)+ ']') FROM dbo.tabelaCotacao WHERE C8_NUM = '002095' AND D_E_L_E_T_ <> '*' GROUP BY C8_FORNECE PRINT @ColunasPivot SET @GrupoPivot = N' SELECT C8_ITEM, C8_PRODUTO, C8_UM, C8_QUANT, B1_DESC, ' + @ColunasPivot + ' ' + ' FROM ( SELECT C8_ITEM, C8_PRODUTO, C8_UM, C8_QUANT, SB1_1.B1_DESC, C8_FORNECE, C8_TOTAL FROM dbo.tabelaCotacao INNER JOIN tabelaProduto AS SB1_1 ON tabelaCotacao.C8_PRODUTO = SB1_1.B1_COD WHERE C8_NUM = ''002095'' AND tabelaCotacao.D_E_L_E_T_ <> ''*'') AS P PIVOT (MIN(C8_TOTAL) for C8_FORNECE in (' + @ColunasPivot + ')) AS Pvt ORDER BY C8_PRODUTO ' PRINT @GrupoPivot EXECUTE(@GrupoPivot)
Essa dúvida foi gerada a partir de um comentário no artigo PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Diego Campos
Curtir tópico
+ 0
Responder
Posts
Clique aqui para fazer login e interagir na Comunidade :)