Pivot table (Özet Tablo), rapor halindeki verilerin daha anlaşılır bir biçimde ve özet halinde sunulması için sıkça kullanılan bir yöntemdir. Pivot operatörü dışarıdan bir tablo değerini girdi olarak alır ve yeni bir tablo değeri oluşturur. Bu nedenle "FROM" yan cümleciği ile birlikte kullanılır. Pivot operatörü ile satırlar sütunlara dönüştürülür. Bunun için girdi tablo ifadeden, bir sütunu pivot olarak belirlemek gerekir. Sorgu sonucu, bu sütunda yer alan değerlere göre her bir tekil değer için bir satır üretir ve diğer satırlar üstünde grupsal bir işlem yapılarak aynı satırın sütunları olarak gösterilir. Pivot table, daha çok verileri gruplamak ve ortalama değerlerle birlikte görüntülemek amacıyla kullanılır. Verilerin tablo halinde görüntülenmesini sağlar. Pivot table raporu özellikle aşağıdaki amaçlarla tasarlanmıştır:
- Çok miktarda veriyi, kullanımı kolay birden çok şekilde sorgulama,
- Sayısal verilerin alt toplamını ve toplamını alma, kategori ve alt kategorilerle verileri özetleme ve özel hesaplamalarla formül oluşturma,
- Sonuçlara odaklanmak için veri düzeylerini genişletme ve daraltma, ilgi alanlarına göre özet verilerden ayrıntılara ulaşma,
- Kaynak verilerin farklı özetlerini görmek amacıyla satırları sütunlara veya sütunları satırlara taşıma veya özetleme,
- İstenen bilgilere odaklanmaya olanak sağlamak amacıyla verilerin en yararlı ve ilginç alt kümesini sıralama, filtre uygulama, gruplandırma ve koşullu biçimlendirme,
- Doğru, ilginç ve ek açıklamalı çevrimiçi veya basılı raporları sunma.
Uygulama
Uygulama olarak bir mağazanın yılın ilk üç ayındaki satış tutarını ve bu satışların ait olduğu ayı tutan bir tablo oluşturulur ve yapılan satışların listesi aşağıdaki gibi girilir.
CREATE TABLE tbSatisBilgisi
(musteriAdSoyad VARCHAR(30),
tutar INT,
donem VARCHAR(10))
INSERT INTO tbSatisBilgisi VALUES('Ali Yılmaz',1200,'Ocak')
INSERT INTO tbSatisBilgisi VALUES('Murat Doğru',2750,'Mart')
INSERT INTO tbSatisBilgisi VALUES('Serdar Elmas',4750,'Şubat')
INSERT INTO tbSatisBilgisi VALUES('Hüseyin Yalçın',7300,'Mart')
INSERT INTO tbSatisBilgisi VALUES('Hüseyin Yalçın',8500,'Ocak')
INSERT INTO tbSatisBilgisi VALUES('Mert Demir',5300,'Şubat')
INSERT INTO tbSatisBilgisi VALUES('Serdar Elmas',6000,'Mart')
INSERT INTO tbSatisBilgisi VALUES('Ali Yılmaz',4200,'Şubat')
INSERT INTO tbSatisBilgisi VALUES('Mert Demir',1750,'Mart')
INSERT INTO tbSatisBilgisi VALUES('Murat Doğru',3600,'Mart')
Oluşturulan tablo şekildeki gibidir:
Daha sonra, her bir müşterinin mağazaya Ocak, Şubat ve Mart aylarındaki toplam ne kadar ödeme yaptığını bulan bir sorgu yazılır.
SELECT * FROM tbSatisBilgisi
PIVOT(
SUM(tutar)
FOR donem IN([Ocak],[Şubat],[Mart])
)AS Piv
Sorgulama sonrası oluşan tablo şekildeki gibidir: