Sql Pivot

Merhabalar bu kez sql de az bilinen bir operatörü yani Pivot komutunu incelecegiz.

Pivot komutu Oracle ve Ms Sql gibi SQL tabanlı databaselerin hepsinde vardır.
Normalizasyon kurallarında içinde tasarlanmış tablolar olap şeklinde sorgulamalara izin vermeyebilir. Bu tür durumlar devreye pivot sorgulama girer ve detaylı analiz imakanı verir.

Pivot kısaca ne yapar ?? Tablo da yapısı geregi alt alta sıralanmış olan kayıları yanyana yani sütunlar şeklinde göstermeye yarar.

Sorgu yazmaya başlamadan önce bir konuda sizi uyarmak isterim. Database üzerine pivot sorgu uyğulayabilmek için bir tane prosedürü çalıştırmanız gerekiyor.

sp_dbcmptlevel 'veritabanı_Adı, '90'İsterseniz Prosedürü çalıştırmadan önce isterseniz sorguyu uygulayın nasıl tepki vereceğini, hangi hatayı döndüreceğini görün. Bu size ilerde konuyla ilgili hata çözümünde yardımcı olacaktır.

İsterseniz şimdi sorgumuzu yazalım.

SELECT *
FROM (
SELECT
YEAR(TARIH) [Yıl],
MONTH(TARIH) [Ay],
TOPLAM
FROM SATIS
) TableDate
PIVOT (
SUM (TOPLAM)
FOR [AY] IN (
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
)
) PivotTable


Sorgumuzu yazdık şimdi kısaca açıklayalım.
Satır halinde olan satışları listeler. Satış tarihini ay ve yıl olarak ayırdık. Pivot kısmında da Toplam alanını topladık ve toplamları aylara bölerek gösterdik.

Konuyu biraz araştırırsanız bu işlemin tersini uygulayan UnPivot komutunuda kolayca kavrarsınız.

Artık istedigimiz zaman OLAP mantıgında sorgular çekebilir kullanıcılara daha okunur daha ayrıntılı raporlar sunabilirsiniz.

Umarım faydalı olmuştur.