Использование факторинга подзапроса в предложении where
Почему я не могу использовать предложение факторинга подзапроса в предложении where, как показано в следующем sql:
with rpt as(
select * from reports where caseid =
:case_id and rownum=1 order by created desc
)
select
distinct rt.trialid
from
report_trials rt
join
trial_genes tg on rt.id=tg.trialid
where
rt.reportid = rpt.id
and
tg.gene not in('TMB','MS')
Подзапрос называется rpt
и используется в предложении выбора оператора where. При выполнении встречается следующая ошибка: ORA-00904: "RPT"."ID": invalid identifier
ОБНОВЛЕНИЕ:
На самом деле вложенный запрос на ту же вещь также вызывает у меня ту же проблему. Вложенный подзапрос возвращает только одно значение столбца из одной строки:
select
distinct rt.trialid
from
report_trials rt
join
trial_genes tg on rt.id=tg.trialid
where
rt.reportid = (select id from reports where caseid = :case_id and
rownum=1 order by created desc)
and
tg.gene not in('TMB','MS')
1 ответ
Решение
Вы пропустили добавление таблицы rpt в ваш запрос, таким образом, эта ошибка.
with rpt as(
select * from reports where caseid =
:case_id and rownum=1 order by created desc
)
select
distinct rt.trialid
from
report_trials rt
join
trial_genes tg on rt.id=tg.trialid
join
rpt on rt.reportid = rpt.id
where
tg.gene not in('TMB','MS')