Oracle 过程不是按函数分组的错误 00979

Posted

技术标签:

【中文标题】Oracle 过程不是按函数分组的错误 00979【英文标题】:Oracle Procedure not a group by function error 00979 【发布时间】:2017-11-22 23:04:42 【问题描述】:

我已经编写了这个程序来从员工表中选择员工以及相应的采购表销售总量。我的程序创建没有任何错误,但该块不工作

【问题讨论】:

请在此处分享您的代码和错误,而不是图片链接 【参考方案1】:

将过程中的查询更改为

SELECT e.NAME, SUM(p.QTY)
  INTO emp_name, total_qty
  FROM PURCHASES p
  INNER JOIN EMPLOYEES e
    ON e.EID = p.EID
  WHERE p.EID = empno
  GROUP BY e.NAME

基本上,使用WHERE 而不是HAVING。如果你真的很想使用HAVING,你可以使用

SELECT p.EID, e.NAME, SUM(p.QTY)
  INTO emp_name, total_qty
  FROM PURCHASES p
  INNER JOIN EMPLOYEES e
    ON e.EID = p.EID
  GROUP BY p.EID, e.NAME
  HAVING p.EID = empno

要使用HAVING,它引用的字段必须在结果中,因此必须在GROUP BY中。

祝你好运。

【讨论】:

以上是关于Oracle 过程不是按函数分组的错误 00979的主要内容,如果未能解决你的问题,请参考以下文章

关于ORA-00979 不是 GROUP BY 表达式错误的解释

按语句分组 SQL

得到 ORA-00979: 不是没有任何聚合函数的 GROUP BY 语句

SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式

Oracle 按分钟而不是每天分组

错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效