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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
--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.
