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