您现在的位置: Gufang > 博客 > 学无止境 > 正文
SQL server把多条记录查找结果合并成一条记录

例如我们有如下一张"用户工厂"表,为多对多关系:

select UserId,工厂号 from 用户工厂

 

如果我们希望得到三个工厂号对应了哪些UserId,把这些UserId放到一行里面显示出来,如下图:

 

 可以使用如下sql语句:

  工厂号,人员(
 ((),UserId)  用户工厂 b  a.工厂号b.工厂号  xml Path()
) 
 用户工厂 a

 注意:上面这段sql语句直接复制到SQL中运行可能会报错,需要去掉所有空格和换行再运行即可,如下:

select distinct 工厂号,人员=(select CONVERT(nvarchar(10),UserId)+',' from 用户工厂 b where a.工厂号=b.工厂号 for xml Path(''))  from 用户工厂 a

 

再通过多表联合查询得到工厂号对应的人员名字,如下:

select distinct 工厂号,人员=(    select UserName+',' from 用户工厂 b inner join 用户信息表 s on s.UserId=b.UserId    where a.工厂号=b.工厂号 for xml Path('')
) 
from 用户工厂 a

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证问题 * 江苏省的省会是哪个城市?请填写正确答案
验证码 * 图片看不清?点击重新得到验证码