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)
Sorgumuzu pivot tabloya çevirme işleminde ise öncelikle gruplama ifadelerini sorgumuzdan çıkartıp, sorgumuzu bir altsorgu haline getiririz.
Kolon isimleri [ ] arasında belirtilir.
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
Yorum Gönder