聚合字符串串联的解决方案
时间:2010-12-23 来源:TwitterSu
把问题简化成下表:
实现起来的方法有很多,这里只列出比较科学的一种:使用FOR XML查询选项的PATH模式。(注意:该方法只适用于SQL Server 2005及更高版本)
解决方案如下:
1 select distinct 学生姓名,班级,stuff(
2
3 (select '、' + 课程名称 as [text()] from dbo.Table_1 as T2
4
5 where T2.学生姓名 = T1.学生姓名 and T2.班级 = T1.班级
6
7 order by T2.班级
8
9 for xml path('')
10
11 ),1,1,'') as 所学课程
12
13 from dbo.Table_1 as T1
14
15 group by 学生姓名,课程名称,班级
说明:stuff()函数用以去除串联所得字符串中的第一个字符(“、”)。path(‘’)表示不产生包装元素,即xml中的节点。具体FOR XML的相关用法请参考MSDN。
查询结果如下:
相关阅读 更多 +