Sql Server数据合并:将多条数据合并到一条记录中
问题:如何将数据表中同一个人的课程,综合到一行数据中去。
数据表情况如下图所示
综合之后,每个人只有一行数据,
如:王五 数学,物理,化学,生物,政治
方法:
SELECT name,stuff(
(SELECT ','+[class] FROM dbo.tb_0002 AS tb01 where tb01.name=tb02.name FOR xml PATH(''))
,1,1,'') AS classes
FROM dbo.tb_0002 AS tb02
GROUP BY name
结果如下图:
SQL 语句解析:
1. STUFF():STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。这里的作用是去掉字段classes前面的‘,’。
2. FOR XML PATH(‘’):这个语句,这个问题的解决主要是这个函数(有兴趣的话,可以自己执行一下)。这名主要是把查到的数据变成XML格式(由多行到一行),之后以没有XML标签,那是因为PATH(’’)没有指定,而是用空字符。