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

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

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
کلاس آ  عرفان، مهران، رضا، هادی
کلاس ب  نازی، الهام، سیما
کلاس پ  عرفان، سالار، رهام
دیدگاه ها: ارسال دیدگاه