在SSRS报表中合并SQL多行IP地址至单行字段的技术问询
合并同一主机的多个IP地址为单行字段的SQL实现
针对SCCM环境下的SQL查询,根据你使用的SQL Server版本,有两种常用方法将同一主机的多个IP合并为单行字段:
方法1:使用STRING_AGG(SQL Server 2017及以上版本)
这是最简洁的实现方式,直接调用内置聚合函数完成字符串拼接:
SELECT computer, STRING_AGG(IP, ', ') AS IP_Addresses FROM YourTable -- 替换为实际表名 GROUP BY computer
- 第二个参数
', '是IP地址之间的分隔符,可按需修改(比如'; '或换行符CHAR(13)+CHAR(10)) - 如果IP字段存在NULL值,可改为
STRING_AGG(ISNULL(IP, ''), ', ')避免拼接结果出现NULL
方法2:使用FOR XML PATH(兼容SQL Server 2016及更早版本)
若你的SQL Server版本不支持STRING_AGG,可采用这种兼容方案:
SELECT DISTINCT computer, STUFF( (SELECT ', ' + IP FROM YourTable t2 WHERE t2.computer = t1.computer FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '' ) AS IP_Addresses FROM YourTable t1
FOR XML PATH('')将子查询返回的多个IP拼接成连续字符串STUFF函数用于移除字符串开头多余的分隔符(此处为前2个字符', ')- 同样可通过
ISNULL(IP, '')处理NULL值
内容的提问来源于stack exchange,提问作者ck1211
相关产品推荐
相关产品推荐

