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
')
|