首页 > 解决方案 > 使用 join 时出错,join 会产生错误

问题描述

我正在尝试创建组并使用下表进行连接,但我得到了一个

ORA-00918: 列定义不明确

错误。

任何想法如何解决?

SELECT staffn, job, COUNT(*)"staffcount",  AVG(sal)"AverageSal"
FROM staff, shop
 WHERE  staff.shopno= shop.shopno
 GROUP BY shopno, job;

标签: sqloracle

解决方案


您的意思是包括staffn在您的选择中吗?我猜这对于一行来说是独一无二的,staff并且会使选择平均值(或任何其他聚合)sal有点没用(如果你确实想这样做,你需要将它包含在 group by 中)。我认为您真的打算在您的组中选择同一列。

您的错误是告诉您 Oracle 不知道应该从哪里获取列,查询中的多个行源可以提供它。完整的报错信息也会明确这是指哪一列,但我们已经可以看到,至少shopno是共享的,我们可以任意取自staff.

SELECT staff.shopno, job, COUNT(*)"staffcount",  AVG(sal)"AverageSal"
FROM staff, shop
 WHERE  staff.shopno= shop.shopno
 GROUP BY staff.shopno, job;

推荐阅读