在 SQL Server 中连接行值:LISTAGG 的替代方案
SQL 中常见的挑战之一是跨行聚合字符串值。在这种情况下,LISTAGG 是许多数据库系统都支持的便捷功能。但是,在 SQL Server 中,没有与 LISTAGG 直接等效的函数。
要在 SQL Server 中实现类似的功能,一种方法是在主查询中使用子查询。然而,如下所示的传统方法有一个潜在的缺点:
SELECT *, (SELECT AGG(CarModel) FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) as CarMakes FROM CarMakes make
在此查询中,AGG 可以替换为 STRING_AGG 和 GROUP_CONCAT 函数的组合:
SELECT *, (SELECT STRING_AGG(CarModel, ', ') FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) as CarMakes FROM CarMakes make
此修改后的查询为连接 SQL Server 中的行值提供了强大的解决方案。然而,值得注意的是,这种方法的性能特征可能会根据数据集的大小和复杂性而变化。
以上是如何在不使用 LISTAGG 的情况下有效连接 SQL Server 中的行值?的详细内容。更多信息请关注PHP中文网其他相关文章!