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