Atiker Yazılım | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Bilgi Bankası > Pratik Bilgiler ve Kullanım Özellikleri
  Aktif Konular Aktif Konular RSS - SQL Server da Pivot Tablo Kullanımı
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Atiker Yazılım Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir. Detaylı bilgi ve destek için: 444 82 99

SQL Server da Pivot Tablo Kullanımı

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
mervenur.demic Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 25 Ekim 2018
Durum: Aktif Değil
Puanlar: 262
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mervenur.demic Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: SQL Server da Pivot Tablo Kullanımı
    Gönderim Zamanı: 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

')


Yukarı Dön
 Yanıt Yaz Yanıt Yaz
  Konu Paylaş   

Forum Atla Forum İzinleri Açılır Kutu İzle