julho 19, 2005

Pivot

Segue um exemplo de como utilizar a nova função de PIVOT do SQL Server 2005

Crie uma tabela e popule os valores de produto/mes.

use AdventureWorks
go
set nocount on
go
drop table foo
go
create table foo (Produto int, Mes int , Valor money)
go
insert foo values (1,1,20)
insert foo values (1,2,10)
insert foo values (1,3,10)
insert foo values (2,1,200)
insert foo values (2,2,100)
insert foo values (2,3,100)
go

Mostra a tabela produtos e valores mês a mês:

select * from foo

Produto Mes Valor
1 1 20,00
1 2 10,00
1 3 10,00
2 1 200,00
2 2 100,00
2 3 100,00

Utilizando o método atual do SQL Server 2000 para pivotar a tabela com SELECT, CASE e SUM utilizamos o código abaixo:

select Produto,
sum(case Mes when 1 then Valor else 0 end) as Jan,
sum(case Mes when 2 then Valor else 0 end) as Fev,
sum(case Mes when 3 then Valor else 0 end) as Mar
from foo
group by Produto

Temos o resultado abaixo:

Produto Jan Fev Mar
1 20,00 10,00 10,00
2 200,00 100,00 100,00

Com a nova função PIVOT do SQL Server 2005 não precisamos utilizar o SELECT, CASE e SUM. Segue o código do SQL Server 2005 para produzir o mesmo resultado anterior:

select Produto,[1] as Jan, [2] as Fev,[3] as Mar
from
(select Valor,Mes,Produto
from foo) p
PIVOT
(
sum(Valor)
for Mes in ([1],[2],[3])
) as foo

Temos o mesmo resultado:

Produto Jan Fev Mar
1 20,00 10,00 10,00
2 200,00 100,00 100,00

Posted by Carlos at julho 19, 2005 06:31 PM
Comments
Post a comment









Remember personal info?