SQL Server’da Satır Değerlerini Gruplayıp Tek Satırda Göstermek

Herkese merhaba,

Bu yazıda SQL Server’da satır değerlerinin gruplanıp tek satırda nasıl gösterileceği hakkında bilgilendirme yapacağım.  Ne demek istiyoruz örnek fotoğrafı inceleyerek görelim.

SQL Server'da Satır Değerlerini Gruplayıp Tek Satırda Göstermek

Yapacağımız işlem yukarıdaki gibi bir gruplama işlemidir. Bu işlemi aşağıdaki tabloyu kullanarak yapıyoruz.

SQL Server'da Satır Değerlerini Gruplayıp Tek Satırda Göstermek

Şimdi gelelim kodlara.

--Tablo oluşturma 

CREATE TABLE Calisanlar
(
    DepartmanKodu INT,
    CalisanAd NVARCHAR(100)
);

--Tabloya veri ekleme 

INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   10,    -- DepartmanKodu - int 
    N'Ali' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   10,       -- DepartmanKodu - int 
    N'Mehmet' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   10,      -- DepartmanKodu - int 
    N'Ahsen' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   10,    -- DepartmanKodu - int 
    N'Gül' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   20,      -- DepartmanKodu - int 
    N'Büşra' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   20,      -- DepartmanKodu - int 
    N'Kübra' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   30,      -- DepartmanKodu - int 
    N'Macit' -- CalisanAd - nvarchar(100) 
    );
INSERT INTO dbo.Calisanlar
(
    DepartmanKodu,
    CalisanAd
)
VALUES
(   30,      -- DepartmanKodu - int 
    N'Deniz' -- CalisanAd - nvarchar(100) 
    );

--Birinci Yöntem 

SELECT C1.DepartmanKodu,
       (
           SELECT C2.CalisanAd + ','
           FROM dbo.Calisanlar C2
           WHERE C2.DepartmanKodu = C1.DepartmanKodu
           ORDER BY C2.CalisanAd
           FOR XML PATH('')
       ) AS Emp_Name
FROM dbo.Calisanlar C1
GROUP BY C1.DepartmanKodu;

--İkinci Yöntem 

SELECT DISTINCT
       C1.DepartmanKodu,
       Temp.CalisanAd
FROM dbo.Calisanlar C1
    CROSS APPLY
(
    SELECT C2.CalisanAd + ','
    FROM dbo.Calisanlar C2
    WHERE C2.DepartmanKodu = C1.DepartmanKodu
    ORDER BY C2.CalisanAd
    FOR XML PATH('')
) AS Temp(CalisanAd);

Burada iki adet yöntem var. Hangisi işinize gelirse.

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

918 Kez Okundu