欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL Server中将多行数据拼接为一行数据(一个字符串)

程序员文章站 2023-08-12 22:59:57
表A中id与表B中aid为一对多的关系 例如: 表A: 表B: 使用for xml path('') 和stuff合并显示多行数据到一行中 : 第一种,不使用stuff,结果如下: 结果: 第二种,使用stuff将最后的逗号去掉 结果: ......

表a中id与表b中aid为一对多的关系

例如:

表a:

id name
a1 tom
a2 lily
a3 lucy

表b:

id aid value
b1 a1 b1
b2 a1 b2
b3 a2 b3
b4 a3 b4
b5 a2 b5
b6 a3 b6
b7 a3 b7

使用for xml path('') 和stuff合并显示多行数据到一行中   :

第一种,不使用stuff,结果如下:

select id, [val]=(  
select [value] +',' from tb as b where b.id = a.id for xml path('')
) from tb as a  
group by id  

结果:

id val
a1 b1,b2,
a2 b3,b5,
a3 b4,b6,b7,

 

 

第二种,使用stuff将最后的逗号去掉

select id, [val]=stuff((  
select ','+[value] from tb as b where b.id = a.id for xml path('')),1,1,'')
from tb as a  
group by id  

结果:

id val
a1 b1,b2
a2 b3,b5
a3 b4,b6,b7