SQL server把多条记录查找结果合并成一条记录

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

select UserId,工厂号 from 用户工厂

 

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

 

 可以使用如下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

 

posted @ 2022-10-18 14:06  海角之上  阅读(4278)  评论(0编辑  收藏  举报