WITH절을 사용하면 쿼리의 결과를 임시테이블에 저장한다.
생성된 임시테이블은 해당쿼리가 끝나면 유지되지 않는다.
같은 쿼리를 여러번 사용할 경우 유용하다.
SELECT구문에서 VIEW처럼 사용할 수 있다.
WITH AS 문법
WITH TABLE_NAME AS (
SELECT ~ 쿼리
)
SELECT *
FROM TABLE_NAME
--------------------------------------------------------------------
WITH 사용 예
WITH TMP1 AS (
SELECT 'TMP1' AS COL1, 'A' AS COL2 FROM DUAL UNION ALL
SELECT 'TMP1' AS COL1, 'B' AS COL2 FROM DUAL
)
, TMP2 AS (
SELECT 'TMP2' AS COL FROM DUAL
)
SELECT *
FROM TMP1
WHERE TMP1.COL2 = 'A'
UNION ALL
SELECT *
FROM TMP1
WHERE TMP1.COL2 = 'B'
=>
WITH절을 콤마로 계속 추가할 수 있다. TMP1, TMP2...
위의 쿼리와 같이 동일한 쿼리를 여러번 사용할 경우 WITH절로 생성하고 아래의 쿼리에서 SELECT ~ TMP1 ~을 하면 WITH절은 한번만 수행되고 그대로 가져다 쓰기 때문에 속도도 빠르고 매우 유용하다.
ex) 한번수행되는데 3초가 걸리는 쿼리를 5번써야하는 상황에서 WITH절을 쓰면 15초 걸리는걸 3초로 단축할 수 있다.
'Programming > Oracle' 카테고리의 다른 글
GROUP BY ROLLUP, 오라클 합계 소계 (0) | 2016.05.16 |
---|---|
오라클 분석함수 (0) | 2016.05.12 |
Oracle Table Function (0) | 2016.04.28 |
오라클 PIVOT UNPIVOT (0) | 2015.12.09 |
오라클 월별누적합계 구하기 (0) | 2015.12.01 |