例:一张表中有两列(班级 + 学生),现在想要把一个班级放到同一行显示,学生姓名间用逗号隔开,利用SQLServer实现
原表如下:
想要如下结果:
准备测试表格
创建学生表:
CREATE TABLE students
(
StuClass varchar(255),
StuName varchar(255),
)
插入数据:
INSERT INTO students (StuClass, StuName) VALUES
('一班', '张三'),
('一班', '李四'),
('二班', '小龙女'),
('一班', '李四'),
('一班', '王五'),
('二班', '过儿')
生成结果
执行下面:
select a.StuClass
,StuName=(stuff((select';'+ b.StuName
from
students b
where a.StuClass=b.StuClass for xml path('')),1,1,''))
from students a
group by a.StuClass
在mysql中 可以用 分组合并 GROUP_CONCAT 函数实现分组合并 类似多行转成一行文本
执行上面代码即成功!!