Sayfayı Yazdır | Pencereyi Kapat

SQL Server da Pivot Tablo Kullanımı

Nereden Yazdırıldığı: Atiker Yazılım | Forum
Kategori: Bilgi Bankası
Forum Adı: Pratik Bilgiler ve Kullanım Özellikleri
Forum Tanımlaması: Pratik Bilgiler ve Kullanım Özellikleri
URL: http://www.atikeryazilim.com.tr/forum_posts.asp?TID=383
Tarih: 21 Kasım 2024 Saat 17:19
Program Versiyonu: Web Wiz Forums 11.04 - http://www.webwizforums.com


Konu: SQL Server da Pivot Tablo Kullanımı
Mesajı Yazan: mervenur.demic
Konu: SQL Server da Pivot Tablo Kullanımı
Mesaj Tarihi: 30 Ekim 2018 Saat 14:08

SQL Server da Pivot Tablo Kullanımı;

Sorgu sonucunda dönen kayıtların satırlarını sütuna çevirme tekniğine pivot tablo denmektedir.  Pivot tablo oluşturabilmek için önce kolon adlarının belirlenmesi gerekir. Eğer kolon isimlerini kayıtlardan dinamik olarak almak istersek aşağıdaki sorgu ile bir değişkene atarak pivot tabloda kullanabiliriz.

DECLARE @PVT_KOLON NVARCHAR(MAX),@PVT_KOLON_ISNULL NVARCHAR(MAX)

SELECT @PVT_KOLON=COALESCE(@PVT_KOLON +',['+ KASA_TANIMI +']','['+ KASA_TANIMI +']')

FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI

SELECT @PVT_KOLON_ISNULL=COALESCE(@PVT_KOLON_ISNULL +',ISNULL(['+KASA_TANIMI +'],0) AS ['+KASA_TANIMI +']','ISNULL(['+KASA_TANIMI+'],0) AS ['+KASA_TANIMI +']')

FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI

Örneğin;

Aşağıdaki sorgu sonucunda dönen kayıtları pivota dönüştüren sorguyu yazalım.

Sorgu sonucunda dönen kayıtlar;

SELECT

KASA_TANIMI,SUM(CASE WHEN GIREN_TUTAR>0 THEN GIREN_TUTAR ELSE CIKAN_TUTAR*-1 END) AS TUTAR

FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI


Pivot tabloya dönüştüren sorgu ve sonucu;

DECLARE @PVT_KOLON NVARCHAR(MAX),@PVT_KOLON_ISNULL NVARCHAR(MAX)

 

SELECT @PVT_KOLON=COALESCE(@PVT_KOLON +',['+ KASA_TANIMI +']','['+ KASA_TANIMI +']')

FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI

 

SELECT @PVT_KOLON_ISNULL=COALESCE(@PVT_KOLON_ISNULL +',ISNULL(['+KASA_TANIMI +'],0) AS ['+KASA_TANIMI +']' ,'ISNULL(['+KASA_TANIMI+'],0) AS ['+KASA_TANIMI +']')

FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI

EXEC

('

 SELECT '+@PVT_KOLON_ISNULL+' FROM

(

 SELECT

 KASA_TANIMI,SUM(CASE WHEN GIREN_TUTAR>0 THEN GIREN_TUTAR ELSE CIKAN_TUTAR*-1 END) AS     TUTAR

 FROM PRG_VIEW_KASAHAREKET GROUP BY KASA_TANIMI

 ) AS T1 PIVOT(SUM(TUTAR) FOR KASA_TANIMI IN ('+@PVT_KOLON+')) PVT

')





Sayfayı Yazdır | Pencereyi Kapat