Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
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