SQL 服务器 2017 STRING_AGG 排序依据

SQL Server 2017 STRING_AGG Order By

我正在使用 SQL Server 2017 Microsoft SQL Server 2017 (RTM-GDR) (KB4583456) - 14.0.2037.2 (X64) 2020 年 11 月 2 日 19:19:59 版权所有 (C ) Windows 10 Pro 10.0(内部版本 19042: )上的 2017 Microsoft Corporation Developer Edition(64 位)。

我正在尝试对 STRING_AGG 函数的结果进行排序。

这个很好用

SELECT STRING_AGG(Category,', ') AS Result
FROM LegacyReviews_Categories

这给我错误消息“消息 102,级别 15,状态 1,第 1 行‘(’附近的语法不正确。”

SELECT STRING_AGG(Category,', ') WITHIN GROUP ( ORDER BY Category ASC) AS Result
FROM LegacyReviews_Categories

我也可以在 SQL Server 2019 build 15.0.4198.2 上重现这个。

它只需要在数据库上下文中查询 运行 设置为 100 (2008) 的 COMPATIBILITY_LEVEL

所有其他(更高版本)兼容级别均有效。

The documentation states

STRING_AGG is available in any compatibility level.

并没有提到这个。

如果您无法将数据库的兼容级别更改为更高级别,那么您可能需要回退到连接有序结果的旧 XML PATH 方法。