SQL Server 中的分组字符串聚合:替换为“AGG”
SQL Server 缺少类似于“AGG”的内置字符串聚合函数' 在您提供的查询中。但是,还有其他方法可以将行值连接成分组结果。
一种解决方案利用 FOR XML 和 STUFF 函数。 FOR XML 函数将内部查询的结果转换为 XML,然后可以使用 STUFF 函数对其进行处理以删除 XML 标签并连接字符串。这是一个示例:
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
另一种方法利用 COALESCE 和 ROW_NUMBER 函数。 COALESCE 函数连接非空值,而 ROW_NUMBER 函数在每个组内分配唯一的行号。以下查询使用此方法:
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
这些方法提供了在 SQL Server 中对字符串进行分组和连接的替代方法,从而实现高效且可读的数据聚合。
以上是如何在没有'AGG”函数的情况下在 SQL Server 中实现字符串聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!