Если я правильно понимаю ваш запрос, вы просто слишком усложнили запрос «и». Таким образом, ваш запрос может быть получен просто:
select
eid || status as value1,
eid || status as value2,
eid || status as value3
from
T1
join T2 on t1.eid = td.eid
where
<Q1 conditions> and
<Q2 conditions> and
<Q3 conditions>
Я мог бы добавить, что "EID" отсутствует в ваших подзапросах. Я не думаю, что ваш пример будет скомпилирован как есть.
И я понимаю, что в этом нет особого смысла - перечислять одинаковые значения в трех столбцах, но я полагаю , что именно ваш запрос делает из-за внутренних объединений, следующих за всеми CTE (при условии, что вы добавляете EID к выводу).
Я полностью размышляю, но я думаю, что это может быть именно тем, что вы пытались сделать:
select
case when <Q1 conditions> then eid || status end as value1,
case when <Q2 conditions> then eid || status end as value2,
case when <Q3 conditions> then eid || status end as value3
from
T1
join T2 on t1.eid = td.eid
where
<Q1 conditions> or
<Q2 conditions> or
<Q3 conditions>
Который должен работать быстрее, потому что он будет выполнять не более одного полного сканирования.
Опять же, я размышляю, но если вы можете добавить некоторые примеры данных и то, что вы хотите, чтобы вывод вашего запроса был , это поможет уточнить.