Académique Documents
Professionnel Documents
Culture Documents
Artigo
Muito se fala sobre PIVOT, mas o pessoal sempre se pergunta: O que é? Qual a
sintaxe? Como aplicar em um SELECT com colunas xas? Como aplicar em um
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 1/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
SELECT com colunas dinâmicas? Vamos esclarecer e explicar cada uma destas
Recebe as atualizações da maior Plataforma para
perguntas. Programadores do Brasil.
O operador PIVOT no SQL Server, gera uma expressão com seus valores em
tabela, ou seja, ele pega os dados que cam em formato horizontal (linhas) e os
coloca em formato vertical (Colunas).
CodProduto Descricao P M G GG UN
AA3705322 BLUSA BASICA 28 33 33 27 23
Qual a sintaxe?
A sintaxe usada no PIVOT parece ser um pouco complexa, mas não é, ela é
simples, não iremos detalhar essa sintaxe, pois o objetivo principal é mostrar na
prática.
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 2/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Essa é a forma mais comum de aplicar o PIVOT em uma consulta. Você conhece a
quantidade exata de colunas desejadas, como por exemplo, um relatório ANUAL
das suas vendas.
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 3/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Como sabemos que o relatório é anual, temos como prever o seu tamanho. Ele
terá que preencher todos os meses do ano, no caso teremos 12 colunas (as
colunas foram suprimidas para facilitar a leitura deste artigo), fora a coluna do
ano.
1 SELECT ANO
2 , [1] AS JANEIRO
3 , [2] AS FEVEREIRO
4 , [3] AS MARÇO
5 , [4] AS ABRIL
6 , [5] AS MAIO
7 , [6] AS JUNHO
8 , [7] AS JULHO
9 , [8] AS AGOSTO
10 , [9] AS SETEMBRO
11 , [10] AS OUTUBRO
12 , [11] AS NOVEMBRO
13 , [12] AS DEZEMBRO
14 FROM VENDAANUAIS PIVOT (SUM(VALOR)
15 FOR MES IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]))P
16 ORDER BY 1;
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 4/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 5/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Com base no modelo das tabelas acima, iremos destrinchar de forma parcelada o
Recebe as atualizações da maior Plataforma para
SELECT com o PIVOT, para que que dedofácil
Programadores entendimento.
Brasil.
1 DECLARE@SQLStrVARCHAR(5000)
2 SET@SQLStr=''
3 SELECT@SQLStr=@SQLStr+'['+[a].[Column]+'], '
4 FROM
5 (SELECTDISTINCTCONVERT(VARCHAR(2),NomeTamanho)as[Column]
6 FROMTamanhos
7 )asa
8 SET@SQLStr=LEFT(@SQLStr,len(@SQLStr)-1)
Como podemos notar, o script inicial tem apenas uma declaração de uma variável
do tipo VARCHAR. Logo após é declarado um apelido para nossa tabela chamado
de 'a' e em seguida é de nido o nome da coluna, neste caso usamos o 'Column'.
Foi de nido um apelido para a tabela assim como acima o 'a'. Em seguida
atribuimos o conteúdo acima para a nossa variável @SQLStr.
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 6/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
de nirmos agrupamentos, etc. Não se prenda nas regras de negocio, elas estão ali
Recebe as atualizações da maior Plataforma para
apenas pra ilustrar o SCRIPT proposto com
Programadores base na Figura 1.
do Brasil.
Assim como o PIVOT xo, temos a mesma forma de implementar no nosso PIVOT
dinâmico, a diferença é que não precisamos colocar as colunas xas [1], [2], [3],
[4], [5], [etc...], pois este trabalho ca a cargo da primeira parte do SCRIPT.
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 7/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Descricao CodProduto G GG M P PP RN UN
BATA NN1405302 27 NULL 25 NULL 25 NULL NULL
CALCA
NN2105304 30 NULL 28 NULL NULL NULL NULL
LINHO
CASACO
NN3205313 24 33 24 NULL NULL NULL NULL
MOLETON
BLUSA
NN3705309 29 NULL 26 25 NULL NULL NULL
BASICA
BLUSA
NN3705314 29 33 25 25 NULL NULL NULL
BASICA MG
BLUSA LACO NN3805304 32 NULL 31 NULL NULL NULL 33
BLUSA
NN3805306 31 NULL 30 NULL 54 NULL NULL
LISTRADA
BLUSA MG NN3805308 31 NULL 28 NULL NULL NULL NULL
VESTIDO
NN4205302 34 NULL 35 NULL NULL NULL NULL
VERMELHO
BLUSA
NN5105314 35 11 33 NULL NULL 11 22
BOTAO
SAIA
NN5205309 32 NULL 31 NULL NULL NULL NULL
ESTAMPADAS 28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 8/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
Descricao CodProduto G GG M P PP RN UN
Recebe as atualizações da maior Plataforma para
BLUSA Programadores do Brasil.
NN5705321 30 NULL 27 25 NULL NULL 22
XADREZ
Por Wesley
Em 2013
Receber Newsletter
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 9/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
ASSINATURA DEVMEDIA
+ 800 MIL
PROGRAMADORES
69 ,90*
/ MÊS
Séries
Projetos completos
Cursos
Guias de carreiras
DevCasts
Desa os
Artigos
App
Suporte em tempo real
Assine
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 10/11
07/11/2019 PIVOT no SQL Server: invertendo linhas e colunas em um exemplo real
(21) 3593-6903
Revistas
Baixe o App
Fale conosco
Trabalhe conosco
Av. Ayrton Senna 3000, Shopping Via Parque, grupo 3087 - Barra da Tijuca - Rio de Janeiro - RJ
28
https://www.devmedia.com.br/pivot-no-sql-server-invertendo-linhas-e-colunas-em-um-exemplo-real/28318 11/11