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

SQL嵌套聚合函数新增查询列报ORA-00937错误如何解决?

问题解答

错误原因

  • 你触发ORA-00937错误的核心原因是嵌套聚合函数(COUNT(MAX(doc_line_num)))和非聚合列同时出现在SELECT子句中时,分组规则不匹配。
  • 第一条SQL可以正常执行,是因为SELECT子句中只有嵌套聚合的计算结果,没有其他非聚合字段,不需要额外分组匹配;第二条SQL加入了OP_CODE非聚合字段,当前的GROUP BY OP_CODE, DOC_NUM只能支撑单层聚合(比如直接返回MAX(doc_line_num)),无法支撑嵌套聚合的分组逻辑。
  • 你当前的WHERE条件已经固定了OP_CODE = 'CHRISTIANMONTALVO',返回的OP_CODE全为同一个固定值,如果后续需要扩展到查询多个OP_CODE的统计结果,下述方案也可通用。

实现方案

该需求完全可实现,使用子查询分两步聚合即可:

SELECT OP_CODE, COUNT(max_doc_line) AS "TOTAL REC"
FROM (
    -- 内层先按OP_CODE、DOC_NUM分组,取每个DOC_NUM对应的最大doc_line_num
    SELECT OP_CODE, DOC_NUM, MAX(doc_line_num) AS max_doc_line
    FROM C_LAB
    WHERE COMP_CODE = 'P1' AND OP_CODE = 'CHRISTIANMONTALVO'
    GROUP BY OP_CODE, DOC_NUM
) t
-- 外层按OP_CODE分组,统计总条数
GROUP BY OP_CODE;

如果确定只查询单个OP_CODE的场景,也可以简化为直接把OP_CODE常量写在SELECT中:

SELECT 'CHRISTIANMONTALVO' AS OP_CODE, COUNT(MAX(doc_line_num)) AS "TOTAL REC"
FROM C_LAB
WHERE COMP_CODE = 'P1' AND OP_CODE = 'CHRISTIANMONTALVO'
GROUP BY DOC_NUM;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:33:03