PIVOT TABLE



Rapor halindeki verilerin daha anlaşılır biçimde görünmesini sağlamak amacıyla pivot tablolar kullanılır. Pivot tabloda satırları sütun haline dönüştürüp, dataların daha kolay yorumlanması sağlanır.

Pivot tablonun yazım formatı aşağıdaki gibidir.

SELECT
[sutun1],
[sutun2]
...
FROM (
SELECT       -- select cümlesi ile pivot sql sorgusu.
) AS TableAlias   -- Tablo için takma ad.
PIVOT
(
<MIN,MAX,SUM,COUNT...gibi fonksiyonlar>(yapılacak işlem göre yer alacak sütun veya sütunlar)
FOR [Pivot tablo sütunları için sütun adını içeren değer veya değerler]
IN (
[sutun1], ... ,[sutun5]     -- görüntülenecek sutunlar
)
) AS PivotTableAlias     -- Pivot tablo için verilen takma ad.
ORDER BY clause       -- tercihe göre isterseniz belli bir kritele sıralamada yaptırabilirsiniz.

Adventure Works databaseini kullanarak pivot tablo kullanımı aşağıdaki şekilde özetlenebilir.
Pivot table kullanmadan örnek bir query yazarsak;

select PC.Name,P.Color,count(*)  ProductCount
from Production.Product P
inner join Production.ProductSubcategory PSC on PSC.ProductSubcategoryID=P.ProductSubcategoryID
inner join Production.ProductCategory PC on PC.ProductCategoryID=PSC.ProductCategoryID
group by PC.Name,P.Color

Sonuç aşağıdaki şekilde bir tablo olur.


 Bu tabloda Product Category ve Color bazında ProductCount hesabı bulunmaktadır.
Bunun yerine pivot tablo kullanılsaydı query şu şekilde olabilirdi.

select *
from
(
select PC.Name,P.Color, P.ProductID
from Production.Product P
inner join Production.ProductSubcategory PSC on PSC.ProductSubcategoryID=P.ProductSubcategoryID
inner join Production.ProductCategory PC on PC.ProductCategoryID=PSC.ProductCategoryID
) as DataTable
pivot
(
 count(ProductID)
for Name
IN ([Bikes],[Components],[Clothing],[Accessories])
)
as PivotTable

Sonuç da aşağıdaki şekilde olur.



Bu tabloda Color bazında ve ProductCategory bazında ProductCount ı görmek ve yorumlamak, pivot tablo olmadan yapılan querydeki sonuca göre daha kolaydır.

0 yorum:

Yorum Gönder