İleri Seviye SQL Server Sql Server

SQL Server’da Dinamik Pivot Kullanımı

SQL Server Eğitimleri Kanalına Abone Olun

Herkese merhaba,

Bu yazıda SQL Server’da Dinamik Pivot kullanımından bahsedeceğim.

Pivot hakkında bilgi edinmek için aşağıdaki makaleyi okuyun.

  SQL Server’da Pivot Kullanımı

SQL Server’da ihtiyaçlar neticesinde Dinamik Pivot kullanma ihtiyacı hissetmiş olabilirsiniz. Aslına bakılırsa çoğu raporlama işleminde dinamik olması büyük önem arz etmektedir.

Aşağıda konu ile ilgili basit bir örnek yaptım. Bu örnekten yola çıkarak sizler de kendi dinamik Pivot sorunlarınızı çözebilirsiniz.

İlk olarak basit bir tablo oluşturdum ve içerisine verileri ekledim.

--Tablonun oluşturulması

CREATE TABLE DinamikTablo
(
    Tarih DATETIME,
    Kategori VARCHAR(30),
    Ucret MONEY
);


--Tabloya veri eklenmesi

INSERT INTO DinamikTablo
VALUES
('2021.09.21', 'Mobilya', 2000.00);
INSERT INTO DinamikTablo
VALUES
('2021.06.21', 'Beyaz Eşya', 500.00);
INSERT INTO DinamikTablo
VALUES
('2021.09.12', 'Elektronik', 1800.00);
INSERT INTO DinamikTablo
VALUES
('2021.08.21', 'Beyaz Eşya', 700.00);
INSERT INTO DinamikTablo
VALUES
('2021.07.21', 'Mobilya', 3100.00);

Şimdi dinamik pivotumuzu oluşturalım.

--Dinamik Pivot Kullanımı

DECLARE @KategoriKolonları AS NVARCHAR(MAX),
    @DinamikSorgu  AS NVARCHAR(MAX);

SET @KategoriKolonları = STUFF(
                         (
                             SELECT DISTINCT
                                    ',' + QUOTENAME(dt.Kategori)
                             FROM DinamikTablo dt
                             FOR XML PATH(''), TYPE
                         ).value('.', 'NVARCHAR(MAX)'),
                         1,
                         1,
                         ''
                     );

SET @DinamikSorgu
    = N'SELECT Tarih, ' + @KategoriKolonları
      + N' FROM 
            (
                SELECT Tarih
                    , Ucret
                    , Kategori
                FROM DinamikTablo
           ) x
            PIVOT 
            (
                 MAX(Ucret)
                FOR Kategori in (' + @KategoriKolonları + N')
            ) P ';


EXECUTE (@DinamikSorgu);

@KategoriKolonları değişkeni içerisine kategori adlarını çektik ve sonrasında pivot içerisinde kullandık. Kısacası @KategoriKolonları kısmını dinamik bir şekle getirmiş olduk.

Sorguyu çalıştırınca aşağıdakine benzer bir sonuç alacaksınız.

SQL Server'da Dinamik Pivot Kullanımı

Görüldüğü üzere Dinamik Pivot elde etmiş olduk.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

39 Kez Okundu
SQL Server Eğitimleri Kanalına Abone Olun

Yazar hakkında

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli birisiyim.

Kopyalamak Yasaktır!