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

SQL Server 2019执行UPDATE语句报聚合函数嵌套错误如何解决

错误原因

你遇到的报错是因为SQL Server不支持嵌套聚合函数的写法,你代码里的MAX(COUNT(SURNAME))不符合语法规则:COUNT(SURNAME)已经是分组后的聚合结果,不能直接在外层再套MAX()聚合函数计算最大值。

解决方案

最简写法(推荐)

直接在分组后按部门员工数降序排序,取第一条的部门编号即可,代码如下:

UPDATE EMPLE
SET DEPT_NO = (
    SELECT TOP 1 DEPT_NO
    FROM EMPLE
    WHERE JOB = 'EMPLOYEE'
    GROUP BY DEPT_NO
    ORDER BY COUNT(SURNAME) DESC
)
WHERE SURNAME = 'SAAVEDRA';

高可读性写法

如果需要更清晰的分层逻辑,或者后续要扩展统计规则,可以用CTE先统计每个部门的员工数,再取值:

-- 先统计每个部门的EMPLOYEE岗位人数
WITH DeptEmployeeCount AS (
    SELECT 
        DEPT_NO,
        COUNT(SURNAME) AS employee_count
    FROM EMPLE
    WHERE JOB = 'EMPLOYEE'
    GROUP BY DEPT_NO
)
UPDATE EMPLE
SET DEPT_NO = (
    SELECT TOP 1 DEPT_NO
    FROM DeptEmployeeCount
    ORDER BY employee_count DESC
)
WHERE SURNAME = 'SAAVEDRA';
注意事项

如果存在多个部门的EMPLOYEE岗位人数相同且都是最大值的情况,上述写法会随机取其中一个部门。如果需要指定优先级,比如取部门编号最小的,只需要在ORDER BY子句后补充排序规则即可,示例:

ORDER BY employee_count DESC, DEPT_NO ASC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:45:04