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

报错Error 979: not a GROUP BY expression,SQL查询最后接触日期失败

解决Oracle Error 979: not a GROUP BY expression问题

这个Error 979是Oracle数据库专属的报错,本质是你写的SQL违反了GROUP BY的核心规则:SELECT子句里的非聚合函数列,必须全部出现在GROUP BY子句中。

咱们来拆解你的SQL问题:

  • 你在SELECT里选了CDC.pat_id(非聚合列)和MAX(SOC.contact_date)(聚合函数)
  • 但你的GROUP BY只写了SOC.contact_date,这完全不对路——你要按患者分组取最新接触日期,GROUP BY的对象应该是患者ID才对!
  • 另外你的SQL还有个小语法错误:MAX(SOC.contact_date), 这里多了个逗号,得删掉,不然也会触发语法报错。

修改后的正确SQL如下:

SELECT CDC.pat_id, MAX(SOC.contact_date)
FROM hb61.cdcsaar_patients CDC 
JOIN clarity.social_hx SOC ON CDC.pat_id=SOC.pat_id 
LEFT OUTER JOIN clarity.smoking_cess_hx CESS ON CDC.pat_id=CESS.pat_id 
LEFT OUTER JOIN clarity.social_hx_alc_use ALC on CDC.pat_id=ALC.pat_id 
GROUP BY CDC.pat_id;

简单解释下修改逻辑:

  • 删掉了SELECT末尾多余的逗号,修复语法问题
  • 将GROUP BY的字段改成CDC.pat_id,这样就符合Oracle的规则:非聚合列CDC.pat_id出现在GROUP BY里,聚合函数MAX(SOC.contact_date)用来计算每个患者的最新接触日期
  • 如果你之后需要在SELECT里加其他非聚合列(比如患者姓名之类的),记得也要把这些列加到GROUP BY子句里哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:08:10