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

yixian2007 2014-06-26 08:32:33
用语言可能描述的不够清楚,举例说明吧。
序号 课程编号 班级名称
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
...全文
247 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixian2007 2014-06-26
  • 打赏
  • 举报
回复
谢谢大家,结贴给分。
向东流 2014-06-26
  • 打赏
  • 举报
回复
在FOR XML里面排序
SELECT 课程编号, 班级名称S=STUFF((SELECT ','+班级名称 FROM tb t WHERE  课程编号=t1.课程编号  ORDER BY 班级名称 FOR XML PATH('')), 1, 1, '')
FROM tb t1
GROUP BY 课程编号
唐诗三百首 2014-06-26
  • 打赏
  • 举报
回复

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)
*/
以学习为目的 2014-06-26
  • 打赏
  • 举报
回复
引用 7 楼 yixian2007 的回复:
[quote=引用 6 楼 blandwolf 的回复:] 上测试数据和结果
我的意思是,可以不可以加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 这样的,能在刚才那条语句中排序吗?[/quote]
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.课程编号
       
yixian2007 2014-06-26
  • 打赏
  • 举报
回复
引用 6 楼 blandwolf 的回复:
上测试数据和结果
我的意思是,可以不可以加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 这样的,能在刚才那条语句中排序吗?
向东流 2014-06-26
  • 打赏
  • 举报
回复
上测试数据和结果
yixian2007 2014-06-26
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
select a.课程编号,
stuff((select ','+班级名称 from tb b 
       where b.课程编号=a.课程编号
       for xml path('')),1,1,'') '班级名称'
from tb a
group by  a.课程编号
引用 2 楼 blandwolf 的回复:
mssql2005
SELECT 课程编号, 班级名称S=STUFF((SELECT ','+[班级名称] FROM table t WHERE  课程编号e=t1. 课程编号 FOR XML PATH('')), 1, 1, '')
FROM table t1
GROUP BY 课程编号
两位大神,这个功能我明白了,但还差一个,将班级名称按一定的顺序排序啊。这种方法可以排序不?
以学习为目的 2014-06-26
  • 打赏
  • 举报
回复
declare @galenkeny table(序号 int identity(1,1),课程编号 VARCHAR(10),班级名称 VARCHAR(10))
insert into @galenkeny
SELECT '010010', 'T1123-1' union all
select '010020', 'T1123-1' union all
select '010010', 'T1133-1' union all
SELECT '010020', 'T1153-1' 



select  b.课程编号,
        班级名称=STUFF((SELECT ','+班级名称 FROM @galenkeny a WHERE  b.课程编号=a.课程编号 FOR XML PATH('')),1,1,'')
        FROM  @galenkeny b
        GROUP BY b.课程编号
發糞塗牆 2014-06-26
  • 打赏
  • 举报
回复
select a.课程编号,
stuff((select ','+班级名称 from tb b 
       where b.课程编号=a.课程编号
       for xml path('')),1,1,'') '班级名称'
from tb a
group by  a.课程编号
向东流 2014-06-26
  • 打赏
  • 举报
回复
mssql2005
SELECT 课程编号, 班级名称S=STUFF((SELECT ','+[班级名称] FROM table t WHERE  课程编号e=t1. 课程编号 FOR XML PATH('')), 1, 1, '')
FROM table t1
GROUP BY 课程编号
yixian2007 2014-06-26
  • 打赏
  • 举报
回复
忘了说了,能用一条语句完成吗?
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧