Использование факторинга подзапроса в предложении 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')
Другие вопросы по тегам