Pivot & Unpivot

Kısaca pivot, satırlarımızı sütunlara unpivot, sütunlarımızı satırlara çevirir.

Pivot örneği için AdventureWorks2012 veritabanını kullanacağım.

Bu veritabanını linkten indirebilirsiniz.

https://msftdbprodsamples.codeplex.com/

Management Studio’yu açtıktan sonra database’e sağ tıklayıp attach diyip indirdiğiniz dosyayı seçerek

ekleyebilirsiniz.

PIVOT ÖRNEĞİ

select * from 
(
select PSC.Name, P.Color,Envanter.Quantity
FROM Production.Product P
inner join Production.ProductSubcategory PSC ON PSC.ProductSubcategoryID=P.ProductSubcategoryID
left join  Production.ProductInventory Envanter ON P.ProductID= Envanter.ProductID
)normaltablom

PIVOT 
(
	SUM(Quantity)
	FOR Color in ([Black],[Red],[Blue],[Multi],[Silver],[Grey],[White],[Yellow],[Silver/Black])

)pivottablom

normaltablom satırına kadar zaten normal şekilde name,color,quantity listeleme yapıyor.

PIVOT kod bloğuyla birlikte çalıştırdığımızda renkleri sütun yaparak hangi renkten kaç adet olduğunu detaylı şekilde listeliyor.

UNPIVOT ÖRNEĞİ 

Unpivot örneği için bir table oluşturdum ve içine veriler ekledim.

create table UnPvt ( VendorID int, Col1 int , Col2 int , Col3 int , Col4 int , Col5 int )

insert into UnPvt values ( 1, 4,6,9,3,6)
insert into UnPvt values ( 2, 6,8,2,1,1)
insert into UnPvt values ( 3, 5,6,7,4,3)
insert into UnPvt values ( 4, 2,0,0,9,6)
insert into UnPvt values ( 5, 1,3,4,4,8)

select * from UnPvt

select VendorID,Employee,Orders from 
(select VendorID,Col1,Col2,Col3,Col4,Col5 from UnPvt) p
unpivot
(Orders FOR Employee in (Col1,Col2,Col3,Col4,Col5) 
)unpivottablom

Unpivot sütunları satır yapıyor demiştik. Biz burda VendorID Employee ve Orders olarak sütunlara başlık verdik.

VendorID sabit kalıyor zaten Employee altında col1 col2 isimleri gelicek, Orders altında da col1 col2 değerleri gelicek