Usuário com melhor resposta
Transform Pivot - Ajuda com Query

Pergunta
-
Olá Pessoal!
estou precisando criar uma query com transform pivot mas não estou conseguindo chegar no meu desejo:
Tenho a tabela exemplo abaixo:
estou usando o trecho abaixo:
TRANSFORM B.VALOR SELECT DISTINCT b.COD, B.TIPO FROM [BD_TESTES$] b GROUP BY B.COD, B.TIPO, B.VALOR ORDER BY B.COD PIVOT b.GRUPO
que me retorna isso:
mas queria obter o resultado abaixo:
o que está faltando?
Valeu pessoal!
Natan
Respostas
-
Ave Google!!!
encontrei a solução, bem simples por sinal:
TRANSFORM FIRST (B.VALOR) SELECT DISTINCT B.COD, B.TIPO FROM [BD_TESTES$] B GROUP BY B.COD, B.TIPO ORDER BY B.COD PIVOT b.GRUPO
Obrigado a todos que tentaram!
Natan
- Editado 'Natan Silva domingo, 6 de março de 2016 19:51
- Marcado como Resposta 'Natan Silva domingo, 6 de março de 2016 19:52
Todas as Respostas
-
Natan,
você precisa dizer ao SQL que cada TIPO é um registro distinto, porque quando você faz o agrupamento, tendo COD E TIPO repetidos, ele vai considerar como apenas um, justamente por agrupar.
Para que você consiga o resultado desejado:
SELECT COD, TIPO, CLASSE, COR_A, COR_B FROM ( SELECT NEWID() ID, COD, TIPO, GRUPO, VALOR FROM [AUTO] c ) d PIVOT ( max(VALOR) FOR GRUPO IN ([CLASSE], [COR_A], [COR_B]) ) p
Att
Antero Marques
-
Olá Antero,
Obrigado por ajudar... tentei utilizar o seu método mas dá erro na clausula from ... um detalhe que não mencionei é que estou fazendo isso via ADO no excel e não diretamente no SqlServer, isso faz com que a função newID não funcione então criei essa coluna na base, alterei também o campo [AUTO] pelo nome da base mas mesmo assim não vai.
SELECT d.cod, d.tipo, d.classe, d.cor_a, d.cor_b FROM (SELECT c.ID, c.cod, c.tipo, c.grupo, c.valor FROM [bd_testes$] c) d pivot max(valor) FOR grupo IN ([classe], [cor_a], [cor_b]) p
Obrigado!Natan
-
Natan,
manda o resultado de um select simples na tabela com o novo campo, por favor.
Com o novo campo que você criou, continua apresentando mensagem de erro ?
Att,
Antero Marques
- Editado Antero Marques domingo, 6 de março de 2016 19:48
-
Ave Google!!!
encontrei a solução, bem simples por sinal:
TRANSFORM FIRST (B.VALOR) SELECT DISTINCT B.COD, B.TIPO FROM [BD_TESTES$] B GROUP BY B.COD, B.TIPO ORDER BY B.COD PIVOT b.GRUPO
Obrigado a todos que tentaram!
Natan
- Editado 'Natan Silva domingo, 6 de março de 2016 19:51
- Marcado como Resposta 'Natan Silva domingo, 6 de março de 2016 19:52
-
-