SQL Server 中的分组字符串聚合:寻找 LISTAGG 替代方案
在 SQL Server 中,字符串聚合可能是一个挑战。给定一个列出汽车品牌和型号的表结构,您可能希望生成一个数据集,该数据集按品牌对汽车型号进行分组,并将它们的值连接到单个列中,类似于 Oracle 中的 LISTAGG 函数。
要实现此目的在 SQL Server 中,您可以使用 FOR XML PATH 方法。考虑以下查询:
SELECT CarMakeID, CarMake, (SELECT ModelNames.ModelNames FROM (SELECT DISTINCT CarModel AS ModelNames FROM CarModels WHERE CarMakeID = make.CarMakeID FOR XML PATH('') ) AS ModelNames ) AS CarModels FROM CarMakes make
子查询 (SELECT ModelNames.ModelNames... 使用 FOR XML PATH('') 方法连接每个汽车品牌的不同型号名称。这会生成一个以逗号分隔的然后分配给外部查询中的 CarModels 列的模型列表。
通过将原始查询中的 AGG(CarModel) 替换为所描述的子查询以上,就可以在SQL Server中实现想要的分组和字符串聚合了。
以上是SQL Server中如何实现像Oracle的LISTAGG函数那样的字符串聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!