1

我的 group by 语句出现 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;

建议?谢谢

4

2 回答 2

2

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

  • 这些包括在GROUP BY列表中,以及
  • 这些使用聚合函数

PNUMBER可以,因为它在GROUP BY列表中;SUM(HOURS)没关系,因为它使用SUM聚合器。

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


*一些 RDBMS 放宽了这些规则,但通常这是您期望使用GROUP BY.

于 2013-10-17T19:17:49.940 回答
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**;
于 2013-10-17T19:15:49.000 回答