Oracle“不是GROUP BY表达式”

时间:2013-10-17 19:13:34

标签: sql oracle

我通过语句在我的组中收到oracle错误,我的group by不是表达式。这似乎适用于MYSQL。

SELECT  pname, PNUMBER, SUM(HOURS)
FROM PROJECT, WORKS_ON w, EMPLOYEE e
WHERE w.essn=e.ssn AND pnumber=pno
GROUP BY PNUMBER;

连连呢?感谢

2 个答案:

答案 0 :(得分:2)

当您使用GROUP BY时,SELECT子句中允许的唯一表达式是 *

  • 这些内容包含在GROUP BY列表中,
  • 这些使用聚合函数

PNUMBER没问题,因为它位于GROUP BY列表中; SUM(HOURS)没问题,因为它使用SUM聚合器。

这给我们留下pname,这两者都不是。根据您尝试实现的目标,您需要对其进行汇总,将其添加到GROUP BY,或从SELECT列表中排除。

<小时/> * 有些RDBMS会放宽这些规则,但通常情况下,您需要使用GROUP BY形成查询。

答案 1 :(得分:1)

和mySQL不一样,你忘记了PNAME

SELECT  pname, PNUMBER, SUM(HOURS)
FROM PROJECT, WORKS_ON w, EMPLOYEE e
WHERE w.essn=e.ssn AND pnumber=pno
GROUP BY PNUMBER, **PNAME**;