PIVOT Tablo

Group by ifadesi ile verilerimiz satır bazında gruplanır, bi'nevi özetlenir. Bazı durumlarda bu satır bilgilerinin sütuna dönüştürülmesi gerekebilir. Bu işlem için sorgu sonucunda dönen kayıt setinin satırlarını sütuna çevirme tekniğine pivot tablo denmektedir. Örneğin aşağıdaki sorguda eyalete göre gruplama yapıp AZ,CA,TX kodlu eyaletlerde bulunan personel sayısının görüntüledik.  (veritabanı adventureworks)

select sp.StateProvinceCode,count(sp.StateProvinceCode) Adet from Person.Address a inner join Person.StateProvince sp
on a.StateProvinceID=sp.StateProvinceID
where sp.StateProvinceCode in ('AZ','CA','TX')
group by sp.StateProvinceCode



Sorgumuzu pivot tabloya çevirme işleminde ise öncelikle gruplama ifadelerini sorgumuzdan çıkartıp, sorgumuzu bir altsorgu haline getiririz.

select * from (
select sp.StateProvinceCode from Person.Address a inner join Person.StateProvince sp
on a.StateProvinceID=sp.StateProvinceID
)k


Daha sonrasında yukarıdaki sorgudan dönen sonucu PIVOT tabloya dönüştürücek olan kodu yazıyoruz. Sorgumuzun son hali ve ekran çıktısı aşağıdaki gibidir:


select * from (
select sp.StateProvinceCode from Person.Address a inner join Person.StateProvince sp
on a.StateProvinceID=sp.StateProvinceID
)k
PIVOT
( count(StateProvinceCode) for StateProvinceCode IN([AZ],[CA],[TX]) ) AS pvt


Kolon isimleri [ ] arasında belirtilir.


Görüldüğü gibi pivot işlemi uygulamadan yazdığımız sorgunun sonucu 3 satır iken pivot işlemi ile satır sayısı 1'e düşürülüp, daha anlaşılır ve  özet halinde bir sorgu sonucu almış olduk.



Yorumlar

Bu blogdaki popüler yayınlar

Natural Key ve Surrogate Key Nedir?

PL/SQL'de DEĞİŞKEN TANIMLAMA, EKRANA YAZI YAZDIRMA ve GÜNCELLEME

SQL Server Analysis Services 2012’de Multidimensional Model ve Tabular Model