닌자고양이
[SQL] WITH 절 (CTE: Common Table Expressions) 본문
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