Можете ли вы использовать что-то на линии
Select * from table(cast(select * from tab1 inner join tab2)) inner join tab3
Примите во внимание, что то, что находится внутри таблицы (cast ()), является чем-то намного более сложным, чем простой выбор, включающий блок, например, с test, как (select) select * ... etc.
Мне нужен простой способ сделать это, желательно без временной таблицы.
Спасибо.
База данных: Oracle 10g
LE:
У меня есть что-то вроде
Select a.dummy1, a.dummy2, wm_concat(t2.dummy3)
from table1 a,
(with str as
(Select '1,2,3,4' from dual)
Select a.dummy1, t.dummy3
from table1 a
inner join
(Select regexp_substr (str, '[^,]+', 1, rownum) split
from str
connect by level <= length (regexp_replace (str, '[^,]+')) + 1) t
on instr(a.dummy2, t.split) > 0) t2
where a.dummy1='xyz'
group by a.dummy1, a.dummy2
Основная идея заключается в том, что столбец t2.dummy3 содержит CSV. Вот почему я выбрал «1,2,3,4» из двойного.
Мне нужно найти все строки, которые содержат хотя бы одно из значений из стр.
Использование любого вида цикла исключено, поскольку в дальнейшем мне нужно интегрировать его в более крупный запрос, используемый для отчета в SSRS, и таблицы, необходимые для этого, довольно большие (> 1 млн строк)