“ORA-00904:‘RN’:无效的标识符00904
问题描述:
我想编写一个查询,以获取有关谁第一个聘请各部门中的员工的信息我写下面的查询,我得到“ORA-00904:‘RN’:无效的标识符00904
“ORA-00904: “RN”:无效的标识符 00904. 00000 - “%s的:无效的标识符”
查询:
select employee_id, department_id, first_name, last_name, hire_date,
ROW_NUMBER() over (partition by department_id order by hire_date) as rn
from employees
where rn =1;
能否请您给我解释一下为w rong“标识符?
答
你需要使用一个子查询或CTE:
select e.*
from (select employee_id, department_id, first_name, last_name, hire_date,
ROW_NUMBER() over (partition by department_id order by hire_date) as rn
from employees e
) e
where rn = 1;
添加查询文本而不是链接到图像 – Jens
这是操作问题的顺序。 SELECT在引擎的where子句之后执行。所以在执行时,RN对where子句是未知的。像@GordonLinoff所说明的那样解决使用子查询或CTE的问题。 [有关先前堆栈问题的更多信息](http://stackoverflow.com/questions/17403935/what-is-the-order-of-execution-for-this-sql-statement) – xQbert