【问题标题】:"ORA-00904: "RN": invalid identifier 00904“ORA-00904:“RN”:无效标识符 00904
【发布时间】:2017-04-18 12:57:41
【问题描述】:

我正在尝试编写查询以获取有关每个部门中最先雇用的员工的信息。我正在写下面的查询,我得到了

"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;

你能解释一下“rn”标识符有什么问题吗?

【问题讨论】:

  • 将查询添加为文本而不是图像链接
  • 这是操作顺序问题。 SELECT 在引擎的 where 子句之后执行。所以在执行的时候,RN对于where子句是未知的。要解决使用@GordonLinoff 说明的子查询或CTE。 More info on a prior stack question

标签: sql oracle


【解决方案1】:

您需要使用子查询或 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 2022-01-22
    • 2011-08-27
    • 2011-04-21
    • 2019-06-29
    • 2013-10-20
    • 2017-12-29
    • 2015-07-25
    相关资源
    最近更新 更多