Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[SQL] WITH 절 (CTE: Common Table Expressions) 본문

기타 코드

[SQL] WITH 절 (CTE: Common Table Expressions)

닌자고양이 2021. 3. 7. 08:24
SELECT * FROM
(
    SELECT 1 AS col
) a

위의 인라인뷰 a를 아래와 같이 WITH 절을 사용해 쿼리 앞에 사용하는 방식이다.

WITH a AS
(
    SELECT 1 AS no
)
SELECT * FROM a

인라인뷰에 비해 좋은 점은 WITH 식을 한번 선언후 여러 FROM 절에서 참조할 수 있다는 점과,

재귀 쿼리 기능을 제공한다는 점이다.

 

아래 예제는 컬럼 별칭의 정의와 ,을 사용해 여러개의 CTE를 정의하는 것을 보여준다.

WITH a("컬럼별칭") AS
(
    SELECT 1
),
b("컬럼별칭") AS
(
    SELECT 2
)
SELECT * FROM a
UNION
SELECT * FROM b

 

WITH 절의 재귀 쿼리는 UNION ALL 을 사용한다.

-- 1부터 10까지 출력
WITH a(no) AS
(
    SELECT 1, UNION ALL
    SELECT no + 1 FROM a WHERE no < 10
)
SELECT * FROM a

-- 피보나치 수열 출력
WITH a(seq, prev, fibo) AS
(
    SELECT 1, 0, 1 UNION ALL
    SELECT seq + 1, fibo, prev + fibo FROM a WHERE seq < 10
)
SELECT * FROM a

 

'기타 코드' 카테고리의 다른 글

[SQL] PIVOT 과 UNPIVOT  (0) 2020.02.12
[SQL] STRING_AGG 대용  (0) 2020.02.08
[SQL] 그룹 관계 없이 값의 연속성에 의한 Partitioning  (0) 2020.02.07
[SQL] N개 행 생성하기  (0) 2020.02.07
Comments