[在线求教]怎么将一列的数据,根据某一列分组后,合并到一个列中
[在线求教]如何将一列的数据,根据某一列分组后,合并到一个列中
用语言可能描述的不够清楚,举例说明吧。
序号 课程编号 班级名称
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
------解决方案--------------------
------解决方案--------------------
在FOR XML里面排序
------解决方案--------------------
用语言可能描述的不够清楚,举例说明吧。
序号 课程编号 班级名称
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
------解决方案--------------------
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)
*/