Em alguns casos é necessário você transformar algumas linhas do resultado da sua query em colunas, como se fosse uma matriz. Segue abaixo um roteiro explicando passo a passo como você deverá fazer essa atividade, tanto no SQL Server 2000 como na versão 2005.
Criar tabela
Tabela que será utilizada para exemplificar o Pivot Table.
Figura 1: Tabela utilizada
Listagem 1: Criando a tabela
create table venda (ano int, mes int, valor numeric(9,2))
Inserir registros
Nesse passo você irá inserir alguns registros para massa de dados.
Listagem 2: Inserindo valores na tabela criada
insert venda values (2003, 2, 10)
insert venda values (2003, 2, 1)
insert venda values (2003, 3, 20)
insert venda values (2003, 4, 30)
insert venda values (2004, 1, 40)
insert venda values (2004, 2, 50)
insert venda values (2004, 3, 60)
insert venda values (2004, 4, 70)
insert venda values (2005, 1, 80)
select * from venda order by 1,2,3
Figura 2: Dados inseridos
Pivot Table na versão 2000
Para fazer um Pivot Table na versão 2000 é necessário você utilizar função de grupo e a cláusula group by.
Listagem 3: Realizando o pivot no SQL Server 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;
Figura 3: Pivot no SQL Server 2000
Pivot Table na versão 2005
Para essa versão já existe a função pivot dispensando agora a utilização da cláusula group by e deixando o código mais “limpo”.
Listagem 4: Pivot no SQL Server 2005
Select ano
, [1] as Jan
, [2] as Fev
, [3] as Mar
, [4] as Abr
from venda pivot (sum(valor) for mes in ([1],[2],[3],[4])) p
order by 1;
Figura 4: Pivot no SQL Server 2005
Conclusão
Pivot Table é um recurso muito interessante principalmente para quem trabalha com BI, onde existe a necessidade constante de transformar linhas em colunas para ter uma melhor visualização dos resultados.
Boa sorte a todos e até a próxima.