O
WITH
cláusula é soa como a coisa mais próxima do que você está descrevendo. Mas isso requer que você gere os dados de alguma forma. Selecionando de DUAL
é provavelmente a opção mais fácil WITH my_temp_table AS (
SELECT 'One' name, 1 num from dual union all
SELECT 'Two', 2 from dual union all
SELECT 'Three', 3 from dual union all
SELECT 'Four', 4 from dual
)
SELECT *
FROM my_temp_table
JOIN person ON (<<some join condition>>)
WHERE <<some predicate>>
Como você não quer unir um monte de consultas, você pode fazer algo como
WITH my_temp_table AS (
select level num,
initcap( to_char( to_date( level, 'J' ),
'JSP' )) name
from dual
connect by level <= 4
)
...