SQL Server’da STRING_AGG Fonksiyonu Kullanımı
Herkese merhaba,
Bu yazıda size SQL Server 2017 ile gelen STRING_AGG Fonksiyonundan bahsedeceğim.
Aslında bu fonksiyon SQL Server 2016 ile hayatımıza girdi ama ben SQL Server 2017 ile anlatacağım.
Bu fonksiyona kısaca string dizi ifadelerini toplayan ya da birleştiren fonksiyon diyebiliriz. Ne demek istiyoruz birkaç örnekle açıklayalım.
--Tablo oluşturma
CREATE TABLE Firmalar
(
Ad VARCHAR(200)
);
INSERT INTO Firmalar
VALUES
('A Firması'),
('B Firması'),
('C Firması'),
('D Firması'),
('E Firması');
--STRING_AGG kullanımı
SELECT STRING_AGG(Ad, ',')
FROM Firmalar;
Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.
Burada oluşturmuş olduğumuz 5 satırlık veriyi STRING_AGG fonksiyonu ile tek satırda gösterebildik.
Benzer işlemi STRING_AGG fonksiyonu kullanmadan eskiden nasıl yapıyorduk aşağıdaki kodda görmekteyiz.
SELECT STUFF(
(
SELECT ',' + [Ad] AS [text()] FROM Firmalar FOR XML PATH('')
),
1,
1,
''
);
Yukarıdaki kodu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.
Görüldüğü üzere yazarken biraz karmaşa yaratabilir.
STRING_AGG fonksiyonu ile ilgili başka bir örnek daha yapalım.
CREATE TABLE #Sehirler
(
[SehirAd] VARCHAR(50)
);
GO
INSERT INTO #Sehirler
SELECT 'Ankara'
UNION ALL
SELECT 'İstanbul'
UNION ALL
SELECT 'Konya'
UNION ALL
SELECT 'İzmir'
UNION ALL
SELECT 'Bursa'
UNION ALL
SELECT 'Mardin'
UNION ALL
SELECT 'Bayburt'
UNION ALL
SELECT 'Hatay'
UNION ALL
SELECT 'Bitlis'
UNION ALL
SELECT 'Hakkari';
GO
SELECT STRING_AGG(SehirAd, ', ') AS TümSehirler
FROM #Sehirler;
--Sıralanmış olarak kullanmak
SELECT STRING_AGG(SehirAd, ', ')WITHIN GROUP(ORDER BY SehirAd) AS SiralanmisTümSehir
FROM #Sehirler;
Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.
Yukarıdaki işlemde ilk olarak bir temp tablo oluşturduk sonrasında içerisine şehir adlarını insert ettik. STRING_AGG fonksiyonumuz ile verileri tek satır olarak getirdik ki zaten amacımız da buydu. Sonrasında Within Group diyerek SehirAd kısmına göre tüm şehirleri sıraladık. İşlemde yapılanlar bu kadar.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.