SQL Server’da Dinamik Pivot Kullanımı
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 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.
Görüldüğü üzere Dinamik Pivot elde etmiş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.