Sql Pivot Table Kullanımı

SQL’de pivot nedir, pivot table kullanımı nasıl olur, bu yazımda bunları anlatmaya çalışacağım.

Şimdi pivot nedir, çok kısa açıklamak gerekirse, tabloda alt alta sıralanmış kayıtları, yan yana sütunlar halinde göstermek için pivot kullanılır.
Ya da satırları sütuna çevirme işlemi de denilebilir.
Bu kullanım çok fazla bilinen ya da tercih edilen bir yöntem değildir, çoğunlukla raporlama yaparken kullanılır. Ama kullanımını öğrendikten sonra, epeyce işinize yarayacaktır.

 
Lafı çok uzatmadan, bu kullanımı bir örnek üzerinden anlatalım.

Şimdi elimizde tblHarcama adında aşağıdaki bir tablomuz olsun,

SELECT * FROM tblHarcama

pivot tablo datası

Burada tablodaki isimlerin 2019, 2018 ve 2017 yılında yaptıkları harcamaların tutarlarının tutulduğunu düşünelim.

Şimdi, bu isimlerin yıl yıl yaptıkları harcamaların toplamlarını tek bir kolonda görmek istersek, aşağıdaki sorgu işimizi görecektir.

SELECT * FROM (
SELECT Musteri, Yil, SUM(Tutar) as ToplamTutar FROM tblHarcama 
GROUP BY Musteri, Yil
) AS tablom
PIVOT
(
SUM(ToplamTutar) --toplam tutarı istiyoruz

FOR Yil --hangi satırları sütün gibi göstereceğimizi belirtiyoruz

IN ([2019], [2018], [2017]) --sütun gibi görünecek kayıtları belirliyoruz
) 
AS pivotTablom

 
Sorgu sonucu aşağıdaki gibi olacaktır.

pivot sonucu

Burada görüldüğü üzere, her bir kişinin yıl içinde yaptıkları toplam harcamaları tek seferde görebiliyoruz.

Konunun daha anlaşılır olması açısından tabloyu kendiniz de oluşturup, sorguyu çalıştırarak deneme yapabilirsiniz.

Buna ek olarak bir de Pivot’un tersi olan Unpivot kullanımı vardır, bunu da daha sonra anlatacağım, dilerseniz kendiniz de araştırıp ne olduğu hakkında fikir sahibi olabilirsiniz.

Konuyu oldukça basit tutmaya çalıştım. Umarım faydalı olmuştur.

3 yorum “Sql Pivot Table Kullanımı”

  1. Merhabalar, paylaşımınız için teşekkür ederim.

    Ben IBM SPSS kullanıyorum ve yetkilendirildiğim tablolar var. Sorum için sizin örneğinizi kullanacağım. Verileri çekerken SPSS programında “Sources” kısmından “Database” nodunu seçiyorum, burada SQL Query sekmesine aşağıdakini yazıyorum ve verilerimi çekiyorum. Sonra da “Export” nodlarıyla çıktıyı (mesela excel formatında) dışarı alıyorum. Tabi sorgularım çok daha fazla veri de içerebiliyor.

    Bu sorgunun arasına pivot’u nasıl yerleştirebilirim acaba?

    SELECT
    Id,
    Musteri,
    Tutar,
    Yil
    FROM
    tblHarcama (yetkili olduğum tablo adı)
    WHERE
    Yil >= 2017
    AND
    Musteri IN ( ‘Ayşe’, ‘Fatma’, ‘Mehmet’, ‘Mustafa’ )

    1. Şu an için kolon dip toplamlarını buldum, eğer yapabilirsem hem satır hem de kolon dip toplamları bulmayı da yorum olarak eklerim. Mevcut kodun eklenmiş hali aşağıdadır.

      WITH data AS (
      SELECT * FROM (
      SELECT Musteri, Yil, SUM(Tutar) as ToplamTutar FROM tblHarcama
      GROUP BY Musteri, Yil
      ) AS tablom
      PIVOT
      (
      SUM(ToplamTutar) –toplam tutarı istiyoruz
      FOR Yil –hangi satırları sütün gibi göstereceğimizi belirtiyoruz
      IN ([2019], [2018], [2017]) –sütun gibi görünecek kayıtları belirliyoruz
      )
      AS pivotTablom
      )
      SELECT Musteri, [2019], [2018], [2017] FROM data
      UNION ALL
      SELECT ”, SUM([2019]), SUM([2018]), SUM([2017]) FROM data

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir