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.
Yapacağımız işlem yukarıdaki gibi bir gruplama işlemidir. Bu işlemi aşağıdaki tabloyu kullanarak yapıyoruz.
Ş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.