【发布时间】:2011-09-21 08:06:35
【问题描述】:
我创建了以下选择:
select e.first_name, e.last_name,
(select jobname_id from
(select j.id, j.jobname_id, first_value(j.jobname_id)
over (order by j.date_from desc) as current_job
from jobs j where j.emp_id=e.emp_id and j.date_from < sysdate)
where jobname_id != current_job and rownum=1) as previous_job
from employees e
但我得到“ORA-00904:“E”。“EMP_ID”:无效标识符”
如何在子查询中使用对 E.EMP_ID 的引用?
【问题讨论】:
-
如果您在工作表中保存“date_to”列,您是否不能否定第一个子查询的需要。然后,您可以直接搜索上一个作业,因为它将是最近 date_to 条目小于 SYSDATE 的作业。
-
正确,但我必须确保所选值不是当前作业 ID。怎么样?
-
是的,但是如果 date_to 小于 SYSDATE 那么该作业不是“当前”,是吗?
-
不完全是,即使它是“上一个”记录,您也可以选择与当前相同的 jobname_id,而且我需要不同的上一个记录 - 这就是问题所在......如果我只能移动“哪里 j. emp_id=e.emp_id " 外