Array
(
)

Problema com Pivot

Diego Campos
   - 28 out 2015

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.

#Código

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

Alex Lekao
   - 28 out 2015

acompanhando.