یادداشت های یک برنامه نویس
دوستدار فرهنگ و هنر کهن ایرانی

قرار دادن چند سطر در یک سطر در SQL Server


پرسش امنیتی

مقدار 15 به علاوه 11 چقدر میشود؟

دیدگاه شما پس از تایید نمایش داده خواهد شد.

قرار دادن چند ردیف از یک ستون در یک ردیف براساس ستون دیگر

1   A
1   B
1   C    →    1   A,B,C 
2   D            2   D,E
2   E    

خروجی زیر را مشاهده کنید:

select * from ClassStudent 
ClassID ClassName StudentID StudentName
1 کلاس آ 1 عرفان
1 کلاس آ 2 مهران
1 کلاس آ 3 رضا
1 کلاس آ 4 هادی
2 کلاس ب 5 نازی
2 کلاس ب 6 الهام
2 کلاس ب 7 سیما
3 کلاس پ 1 عرفان
3 کلاس پ 8 سالار
3 کلاس پ 9 رهام

با استفاده از دستور زیر:

SELECT 
 GBV.ClassName, 
 (SELECT '، ' + XMLV.StudentName 
  FROM ClassStudent XMLV
  WHERE XMLV.ClassID = GBV.ClassID
  FOR XML PATH('')) [StudentNames]
FROM ClassStudent GBV
GROUP BY GBV.ClassName, GBV.ClassID

خروجی به این صورت می شود:

ClassName StudentNames
کلاس آ ،عرفان، مهران، رضا، هادی
کلاس ب  ،نازی، الهام، سیما
کلاس پ  ،عرفان، سالار، رهام

و برای حدف کاما از آخرین رکورد کد را بصورت زیر کامل می کنیم:

SELECT 
 GBV.ClassName, 
 STUFF((SELECT '، ' + XMLV.StudentName 
        FROM ClassStudent XMLV
        WHERE XMLV.ClassID = GBV.ClassID
        FOR XML PATH('')), 1, 1, '') [StudentNames]
FROM ClassStudent GBV
GROUP BY GBV.ClassName, GBV.ClassID

و خروجی به این صورت می شود:

ClassName StudentNames
کلاس آ  عرفان، مهران، رضا، هادی
کلاس ب  نازی، الهام، سیما
کلاس پ  عرفان، سالار، رهام