mssqlserver 数据行转字符串

有数据表学生信息表:学生ID、学生姓名、出生日期、班级ID。

现在我们要实现的效果为:班级ID、学生姓名集合。结果如下:

班级ID                学生姓名

1                        张三,李四,王五

2                        赵六,商七,杜八

3                        孙丹,刘红

4                        赵敏

 

实现代码可以参考如下(information_schema为系统表):如下SQL可以直接在任何数据库中执行。

 

SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names
FROM information_schema.columns AS extern
CROSS APPLY
(
    SELECT column_name + ','
    FROM information_schema.columns AS intern
    WHERE extern.table_name = intern.table_name
    FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY table_name, column_names;

 

sql-server 2012之后微软提供了CONCAT函数可以实现这个功能

你可能感兴趣的:(mssqlserver 数据行转字符串)