Carregar apresentação
A apresentação está carregando. Por favor, espere
1
SQL Server Comando PIVOT
2
O que faz? Transforma as linhas de uma consulta em colunas
3
Onde é aplicado? Em relatórios de comparação em um período de forma agrupada Exemplo: Total vendido dos vendedores Cód. Vendedor jan fev Mar abr 1 100,00 150,00 30,00 50,00 2 120,00 3 70,00 35,00 4 10,00
4
Tabela do banco para exemplo
Uma tabela com campo Codigo,Cliente,Data e Valor_Final.
5
Resultado usando o comando mais conhecido
Abaixo é o método mais usado onde retorna em linhas o cliente e o mês com o total. Em seguida por programação as colunas são alinhadas no relatório por mês.
6
Resultado usando o comando PIVOT
Usando o comando PIVOT é possível trazer as linhas que são os meses, elas se transformam em colunas de uma vez.
7
Comparação dos resultados
Usando o comando GROUP BY Usando o comando PIVOT
8
Comando executado Select Cliente as 'Cliente',
[1] as 'jan',[2] as 'fev‘,[3] as 'mar',[4] as 'abr‘,[5] as 'mai',[6] as 'jun‘,[7] as 'jul',[8] as 'ago‘,[9] as 'set',[10] as 'out‘,[11] as 'nov',[12] as 'dez' FROM (Select MONTH(Data) as Mes, Cliente, Valor_Final FROM Venda WHERE Data>='01/01/ :00:00' AND Data<='12/31/ :59:59‘ ) as vend PIVOT ( Sum(Valor_Final) FOR Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]) ) as pv ORDER BY Cliente ASC Executa o comando SELECT e monta a estrutura do resultado Busca todos campos usados no comando. Executa o comando PIVOT Resultado que aparecerá nas células Passa o campo que filtra as colunas Estes valores fixos definem o resultado da coluna. Ex: jan=1=[1]
9
Prós e contras Prós Executa em apenas um comando;
É mais rápido pois não há codificação para processar o resultado; Contras A estrutura é fixa;
10
Comando para SQL 2000 select ano , mes_1 = sum(case when mes=1 then valor end) , mes_2 = sum(case when mes=2 then valor end) , mes_3 = sum(case when mes=3 then valor end) , mes_4 = sum(case when mes=4 then valor end) from tb_venda group by ano order by ano
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.