You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2017 STRING_AGG使用WITHIN GROUP排序报语法错误

错误产生原因

你当前使用的SQL Server 2017实例版本为14.0.2037.2,属于RTM-GDR分支,仅安装了安全类补丁,未安装功能累积更新:

  • STRING_AGG函数在SQL Server 2017 RTM初始版本中就已上线,因此不带排序的基础聚合查询可以正常执行
  • STRING_AGG配套的WITHIN GROUP排序子句是在SQL Server 2017 CU1(累积更新1,版本号14.0.3006.16)中才新增的功能,你当前的实例版本未包含该功能实现,因此解析到WITHIN GROUP语法时会抛出102号语法错误。
正确实现方案

你可以根据实际环境选择以下两种方案实现排序拼接:

方案1:升级实例补丁(推荐,原生语法支持)

直接为SQL Server 2017实例安装CU1及以上版本的累积更新(建议安装最新累积更新获得完整功能与bug修复),补丁安装完成后重启实例,即可使用标准的WITHIN GROUP语法实现排序聚合,语句如下:

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

方案2:不升级补丁的兼容写法

如果暂时无法调整实例补丁版本,可以通过子查询先排序再聚合的方式实现相同效果,使用OFFSET 0 ROWS固定子查询排序结果,避免优化器忽略排序逻辑,语句如下:

SELECT STRING_AGG(Category,', ') AS Result
FROM (
    SELECT Category
    FROM LegacyReviews_Categories
    ORDER BY Category ASC
    OFFSET 0 ROWS
) AS sorted_temp

该写法在你当前的RTM版本中可以正常执行,返回结果和原生WITHIN GROUP语法完全一致。


内容的提问来源于stack exchange,提问作者evanburen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.15 16:16:02