Факторинг подзапроса: Inner Join друг с другом
У меня есть четыре предложения СО. Я хотел знать, возможно ли использовать среди них внутренние объединения.
Я искал в сети, и я не мог найти ничего, связанного с этим.
Версия Oracle: 11 г
** РЕДАКТИРОВАТЬ **
WITH
GETDATABYDAY AS
(
select column1, column2
from table1
where sales > 2000
)
SELECT
column1,
column2
FROM
GETDATABYDAY;
WITH
GETDATABYDAY1 AS
(
select column3, column2
from table1
where date between 'date1' and 'date2'
)
SELECT
column3,
column2
FROM
GETDATABYDAY1;
Assume that there are two more WITH named: GETDATABYDAY2 and GETDATABYDAY3
Можно ли использовать внутреннее объединение для всех GETDATABYDAY, GETDATABYDAY1, GETDATABYDAY2 и GETDATABYDAY3?
2 ответа
Примерно так будет работать:
with first_cte as (
select ...
from ...
), second_cte as (
select ...
from first_cte
join some_table on ...
), third_cte as (
select ...
from ...
) fourth_cte as (
select ...
from some_other_table
join second_cte on ...
)
select ..
from fourth_cte
join third_cte on ....
Я не думаю, что это может работать, так как каждый with clause
является частью совершенно другого запроса.
Вы можете создать db views
хотя и используйте их вместо предложения with.