programing

단일 SQL에 여러 "WITH AS"를 포함할 수 있습니까? - Oracle SQL

topblog 2023. 3. 19. 17:48
반응형

단일 SQL에 여러 "WITH AS"를 포함할 수 있습니까? - Oracle SQL

아주 간단한 질문이 있습니다.Oracle은 단일 SQL 문에 여러 "WITH AS"를 허용합니까?

예:

WITH abc AS( select ......)

WITH XYZ AS(select ....) /*This one uses "abc" multiple times*/

Select ....   /*using XYZ multiple times*/

같은 쿼리를 여러 번 반복함으로써 쿼리를 실행할 수 있지만, 이 쿼리를 실행하고 싶지 않고 "WITH AS"를 활용합니다.간단한 요구 사항처럼 보이지만 Oracle에서는 다음을 수행할 수 없습니다.

ORA-00928: SELECT 키워드가 없습니다.

다음과 같이 할 수 있습니다.

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

Common Table Expressions에서 초기화 순서를 따릅니다.

Aditea 또는 기타 예에서는 t2를 t1과 결합하거나 일치시킬 수 있습니까?즉, 제 코드로 변환됩니다.

with t1 as (select * from AA where FIRSTNAME like 'Kermit'),
     t2 as (select * from BB B join t1 on t1.FIELD1 = B.FIELD1)

WHERE만 가입이 지원되는지, 아니면 두 번째 WITH 엔티티 내에서 어떤 가입 방식이 지원되는지 알 수 없습니다.일부 예에서는 WITH 절을 "선택한" 본문에 WHERE A=B가 있습니다.

이러한 WITH 선언에 따라 발생하는 오류는 B의 식별자(필드 이름)가 SQL의 나머지 본문에 인식되지 않는다는 것입니다.따라서 WITH 구문은 정상적으로 실행되지만 t2의 결과에는 액세스할 수 없습니다.

언급URL : https://stackoverflow.com/questions/19654494/can-we-have-multiple-with-as-in-single-sql-oracle-sql

반응형