1 / 10

SQL Server

SQL Server. Comando PIVOT. O que faz?. Transforma as linhas de uma consulta em colunas. Onde é aplicado?. Em relatórios de comparação em um período de forma agrupada Exemplo: Total vendido dos vendedores. Tabela do banco para exemplo. Uma tabela com campo Codigo,Cliente,Data e Valor_Final.

radha
Download Presentation

SQL Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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/2009 00:00:00' AND Data<='12/31/2009 23: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

More Related