UNPIVOT Table

Pivot table konumuzun devamı olan unpivot table işlemini incelemeye başlıyoruz. Eğer pivot table oluşturma, bu tabloları kullanma işlemi sık sık tekrarlanıyorsa performans sağlanması ve zaman kazandırması açısından pivot table işleminin sonucu başka bir tabloya yazılır, artık sorgulama bu tablo üzerinden yapılır. Bu gibi durumlarda bazen de pivot tablonun eski haline döndürülmesi istenebilir ve o zaman devreye unpivot table işlemi girer.

Hemen örneğimize başlayalım. Pivot table konumuzdaki örnek sorgumuz üzerinden gideceğiz.
Pivot table işleminin sonucunun tutulacağı tabloyu oluşturuyoruz:

create table pivottable(Az int, Ca int, Tx int);

Sorgu sonucunu tabloya yazıyoruz:

insert into pivottable
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

select * from pivottable


Şimdi unpivot işlemine geçebiliriz. Pivot işlemiyle kodları çok benzerdir, bir kaç ufak değişiklik dışında. Örneğin; count(StateProvinceCode) ifadesi yerine alan adı verilip Adet denilmiştir.

select * from(
select Az,Ca,Tx from pivottable) t
UNPIVOT
(Adet for StateProvinceCode in([Ca],[Az],[Tx]))as unpvt


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