У меня есть этот запрос:Oracle - коррелировали проблемы подзапрос
select acc_num
from (select distinct ac_outer.acc_num, ac_outer.owner
from ac_tab ac_outer
where (ac_outer.owner = '1234567')
and ac_outer.owner = (select sq.owner
from (select a1.owner
from ac_tab a1
where a1.acc_num = ac_outer.acc_num /*This is the line that gives me problems.*/
order by a1.a_date desc, a1.b_date desc, a1.c_date desc) sq
where rownum = 1)
order by dbms_random.value()) subq
order by acc_num;
Идея заключается в том, чтобы получить все acc_num
с (не первичный ключ) из ac_tab
, которые имеют в owner
из 1234567
.
Так как acc_num
в ac_tab
мог измениться owner
сек в течение долгое времени, я пытаюсь использовать внутренние связанные подзапросы, чтобы гарантировать, что acc_num
возвращается только если это самого последнегоowner
является 12345678
. Естественно, он не работает (или я бы не размещал здесь;))
Oracle дает мне ошибку: ORA-000904 ac_outer.acc_num is an invalid identifier
.
Я думал, что ac_outer
должен быть видимым для коррелированных подзапросов, но по какой-то причине это не так. Есть ли способ исправить запрос или мне нужно прибегнуть к PL/SQL, чтобы решить эту проблему?
(Oracle verison является 10г)
+1: Вы правы, спасибо за исправление. Не знаю, что я думал ... –
Мне нужно сделать немного больше анализа результатов, но это, кажется, дает мне то, что я хочу. Мне действительно нужно больше узнать об аналитических функциях! – FrustratedWithFormsDesigner