Передача параметров во вложенные подзапросы

В выборке одно из выбираемых полей выглядит так:

(select operation_datetime
    from (select operation_datetime, rownum rn
        from (select operation_datetime
            from mt_operation_history
            where mt_id = moh.mt_id
            order by operation_datetime desc)
        )
        ...

где moh.mt_id - это обращение к самому внешнему запросу

Тут возможно обращаться во вложенном запросе к внешнему только если запрос вложен напрямую. А если во вложенном запросе есть ещё один вложенный запрос, то уже ошибка.

Пробовал выносить в with и from внешнего запроса, но всё равно, когда обращаюсь к ним из вложенного запроса, опять ошибка.


Ответы (1 шт):

Автор решения: 0xdb
with mt_operation (id, name) as (
    select rownum, 'oper '||rownum 
    from xmlTable ('1 to 2')
),
mt_operation_history (id, operation_datetime) as (
    select mod(rownum,2)+1, date'2020-03-23'+rownum/24
    from xmlTable ('1 to 6')
)
select mop.id, mop.name, moh.lastDT
from mt_operation mop
join (
    select id, max (operation_datetime) keep (dense_rank last order by operation_datetime) lastDT  
    from mt_operation_history
    group by id) moh on moh.id = mop.id 
order by id;

Такой запрос работает и выводит результат (также на db<>fiddle):

        ID NAME     LASTDT             
---------- -------- -------------------
         1 oper 1   2020-03-23 06:00:00
         2 oper 2   2020-03-23 05:00:00

Пожалуйста, теперь бросьте в меня камень поясните, почему у вас не работает.

→ Ссылка