Programming/Oracle2016. 5. 10. 22:44


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
Posted by jvvj