У меня очень простой вопрос: есть ли в Oracle позволило несколько "С как" в один SQL-оператор.
Пример:
WITH abc AS( select ......)
WITH XYZ AS(select ....) /*This one uses "abc" multiple times*/
Select .... /*using XYZ multiple times*/
Я могу сделать работу запроса, повторив тот же запрос несколько раз, но не хочу этого делать, и использовать "С как". Кажется, что это просто требование, но Oracle не позволит мне:
в Ora-00928: отсутствует выберите сайта
Вы можете сделать это так:
WITH abc AS( select
FROM ...)
, XYZ AS(select
From abc ....) /*This one uses "abc" multiple times*/
Select
From XYZ.... /*using abc, XYZ multiple times*/
правильный синтаксис -
with t1
as
(select * from tab1
where conditions...
),
t2
as
(select * from tab2
where conditions...
(you can access columns of t1 here as well)
)
select * from t1, t2
where t1.col1=t2.col2;
Да, вы можете...
WITH SET1 AS (SELECT SYSDATE FROM DUAL), -- SET1 initialised
SET2 AS (SELECT * FROM SET1) -- SET1 accessed
SELECT * FROM SET2; -- SET2 projected
10/29/2013 10:43:26 AM
Следить за тем, в котором она должна быть инициализирована в общие табличные выражения
Адитья или другие, вы можете присоединиться или Т2 с Т1 в вашем примере, т. е. в переводе на мой код,
with t1 as (select * from AA where FIRSTNAME like 'Kermit'),
t2 as (select * from BB B join t1 on t1.FIELD1 = B.FIELD1)
Я не ясно, будет ли только там, где поддерживается за присоединение, или то, что присоединение подход поддерживается в пределах 2-го с лица. Некоторые примеры имеют где A=B вниз в теле выбрать и"ниже" и то с оговорками.
Ошибок я'м становится после этих заявлений-это идентификаторы (имена полей) в B не признал, в тела остальных и SQL. Поэтому с синтаксисом, кажется, работает ОК, но не могу открыть результаты от Т2.