参考:
https://www.cnblogs.com/cnki/p/9561427.html
https://www.cnblogs.com/johnwood/p/6386613.html
1.表1:
CREATE TABLE [dbo].[SQLServerInfo]( [objid] [varchar](50) NULL, [instancename] [varchar](50) NULL ) ON [PRIMARY]
objid instancename
Server1.uuu Instance1
Server2.uuu Instance1
Server3.uuu Instance1
Server4.uuu Instance2
Server5.uuu Instance3
2.表2:
CREATE TABLE [dbo].[WinServers]( [hostname] [varchar](50) NULL, [serverrole] [varchar](50) NULL, [ip] [varchar](50) NULL ) ON [PRIMARY]
hostname serverrole ip Server1 role1 1.1.1.1 Server2 role2 1.1.1.2 Server3 role3 1.1.1.3 Server4 role4 1.1.1.4 Server5 role5 1.1.1.5
3.查询:
With SQLServerInfoView as ( select a.[instancename],b.[serverrole],b.[ip] from [SQLServerInfo] a left join winservers b on substring(a.objid,0,charindex('.',a.objid,0))=b.hostname ) select [instancename], [serverrole] = ( stuff( (select ',' + [serverrole] from SQLServerInfoView where [instancename] = A.[instancename] for xml path('')), 1, 1, '' ) ), [ip] = ( stuff( (select ',' + [ip] from SQLServerInfoView where [instancename] = A.[instancename] for xml path('')), 1, 1, '' ) ) from SQLServerInfoView as A group by [instancename]