【问题标题】:ORA-00918: column ambiguously defined with [group by]ORA-00918: 使用 [group by] 定义不明确的列
【发布时间】:2015-05-14 21:07:49
【问题描述】:

在 SQL 中我有这些表

create table employee(
emp_ssn number(10),
first_name varchar2(10) not null ,
second_name varchar2(10),
last_name varchar2(10) not null ,
address varchar2(20) ,
birthdate date not null  ,
super_ssn number(10),
job_no  number (2),
constraint employee_pk primary key (emp_ssn));

create table job (
job_no number (2),
job_name varchar2(11) ,
constraint job_pk primary key (job_no ));

我写了一个查询,显示每个中有多少员工 使用 group by 的作业

SELECT     job_no, job_name,COUNT(emp_ssn)
FROM       job j JOIN employee e
ON         (j.job_no = e.job_no)
GROUP BY   j.job_no, j.job_name;

输出是

SELECT     job_no, job_name,COUNT(emp_ssn)
FROM    job j JOIN employee e
ON       (j.job_no = e.job_no)
GROUP BY   j.job_no, j.job_name;
SELECT     job_no, job_name,COUNT(emp_ssn)

第 1 行出现错误:ORA-00918:列定义不明确

你能帮帮我吗!

【问题讨论】:

  • 请不要标记每个 DBMS。 Oracle sql 服务器 mysql
  • 您没有在列列表中定义您想要的 WHICH job_no。您应该始终指定表格。

标签: oracle


【解决方案1】:
SELECT      j.job_no           --<-- you are missing alias here
          , j.job_name         --<-- here
          ,COUNT(e.emp_ssn)    --<-- and here
FROM       job j JOIN employee e
ON         (j.job_no = e.job_no)
GROUP BY   j.job_no, j.job_name;

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多