[在线求教]怎么将一列的数据,根据某一列分组后,合并到一个列中

[在线求教]如何将一列的数据,根据某一列分组后,合并到一个列中
用语言可能描述的不够清楚,举例说明吧。
序号  课程编号      班级名称
1        010010        T1123-1
2        010020        T1123-1
3        010010        T1133-1
4        010020         T1153-1
用课程编号分组,将班级名称按照一定的顺序组合起来,形成如下的结果
010010          T1123-1,T1133-1
010020          T1123-1,T1153-1
------解决方案--------------------
引用:
Quote: 引用:

上测试数据和结果


我的意思是,可以不可以加order by 排序,因为上面的例子中
序号  课程编号      班级名称
1        010010        T1123-1
2        010020        T1123-1
3        010010        T1133-1
4        010020         T1153-1

假如我将第2行和第4行交换一下
1        010010        T1123-1
2        010020        T1153-1
3        010010        T1133-1
4        010020         T1123-1

如果还要形成
010010          T1123-1,T1133-1
010020          T1123-1,T1153-1
这样的,能在刚才那条语句中排序吗?

declare @galenkeny table(序号 int identity(1,1),课程编号 VARCHAR(10),班级名称 VARCHAR(10))
insert into @galenkeny
SELECT '010010', 'T1123-1' union all
select '010020', 'T1153-1' union all
select '010010', 'T1133-1' union all
SELECT '010020', 'T1123-1' 



select  b.课程编号,
        班级名称=STUFF((SELECT ','+班级名称 FROM @galenkeny a WHERE  b.课程编号=a.课程编号 ORDER by 班级名称 FOR XML PATH('')),1,1,'')
        FROM  @galenkeny b
        GROUP BY b.课程编号
       

------解决方案--------------------
在FOR XML里面排序
SELECT 课程编号, 班级名称S=STUFF((SELECT ','+班级名称 FROM tb t WHERE  课程编号=t1.课程编号  ORDER BY 班级名称 FOR XML PATH('')), 1, 1, '')
FROM tb t1
GROUP BY 课程编号

------解决方案--------------------

create table yx
(序号 int,课程编号 varchar(10),班级名称 varchar(10))

insert into yx
 select 1,'010010','T1123-1' union all
 select 2,'010020','T1153-1' union all
 select 3,'010010','T1133-1' union all
 select 4,'010020','T1123-1'


select a.课程编号,
       stuff((select ','+b.班级名称 
              from yx b 
              where b.课程编号=a.课程编号
              order by b.班级名称 
              for xml path('')),1,1,'') '班级名称'
 from yx a
 group by a.课程编号

/*
课程编号       班级名称
---------- -----------------------
010010     T1123-1,T1133-1
010020     T1123-1,T1153-1

(2 row(s) affected)
*/