قرار دادن چند سطر در یک سطر در SQL Server
قرار دادن چند ردیف از یک ستون در یک ردیف براساس ستون دیگر
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 |
کلاس آ | عرفان، مهران، رضا، هادی |
کلاس ب | نازی، الهام، سیما |
کلاس پ | عرفان، سالار، رهام |