folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder SQL Server Üzerinde Pivot Tablo Kullanımı



SQL Server Üzerinde Pivot Tablo Kullanımı

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Veritabanında alt alta elde ettiğimiz çıktılarımızın yan yana gösterilmesi için gereken SQL sorgusudur. Satırları, sütun şeklinde gösterilmesini sağlar.

    Diyelim ki elimizde dönem dönem kişilerin satışlarını gösteren basit bir tablo olduğunu varsayalım. Satış yapan kişinin dönem dönem yaptığı satışları tuttuğumuz bir veritabanı sistemi oluşturalım.
    Not: Anlaşılabilir olması için tablo basit tutulmuştur.

    Muhasebe Tablosu

    CREATE Table tblMuhasebe
    (
       id INT PRIMARY KEY IDENTITY,
       ad_soyad NVARCHAR(50),
       donem NVARCHAR(6),
       toplam INT
    )

    İçerisine biraz kayıtlar ekleyelim

    Eklenen Kayıtlar

    Görüldüğü gibi 201501 (2015 Ocak), 201502 (2015 Şubat), 201503 (2015 Mart) ayına ait satış raporlarının kayıtları bulunmaktadır.  Şimdi ise pivot tablo yaparak dönemleri yatay olarak (tablonun bir kolonu gibi) gösterelim.

    Pivot Sorgusu

    SELECT ad_soyad, [201501] AS [2015 Ocak], [201502] AS [2015 Şubat], [201503] AS [2015 Mart]
    FROM
    (SELECT ad_soyad, toplam, donem FROM tblMuhasebe) AS SATIS_SONUCU 
    PIVOT 
    (SUM(toplam) FOR donem IN([201501], [201502], [201503])) AS SATIS_SONUCU_PIVOT

     

    Sonuç

     

    Bol pivotlu günler :)

    Kaynak: http://www.ontedi.com/sql/sql-server-uzerinde-pivot-tablo-kullanimi

     

     

    En dip not: Forumdaki resimlerin vahşice görüntülenmesi sorununu gidermek için

    div.postMain .PostCanvas .PostContent img {
        height: auto;
        max-width: 100%;
        min-height: 16px;
        min-width: 16px;
    }

    olarak düzeltin bir zahmet.

    ontedi tarafından 29/Ara/15 10:22 tarihinde düzenlenmiştir

    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.