CTE (Common Table Expression: ๊ณตํต ํ ์ด๋ธ ์)
- ๊ธฐ์กด์ ๋ทฐ, ํ์ ํ ์ด๋ธ, ์์ ํ ์ด๋ธ ๋ฑ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ๋์ ํ ์ ์์ผ๋ฉฐ, ๋ ๊ฐ๊ฒฐํ ์์ผ๋ก ๋ณด์ฌ์ง๋ ์ฅ์ ์ ๊ฐ์ง
- ์ค์ ๋ก CTE๋ผ๋ ํค์๋๊ฐ ์ฝ๋ ์์ ๋ค์ด๊ฐ์ง๋ ์๊ณ , WITH ๊ตฌ๋ฌธ์ ์ด์ฉํจ.
- SELECT๋ฌธ์ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์ด๋ฆ์ ๋ถ์ธ ํ, ์ด์ด์ง๋ ์ฟผ๋ฆฌ์์ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ
- CTE๋ ๋ฐ๋ก ๋ค์์ ์ค๋ select์ ์๋ง ํด๋น CTE๋ฅผ ์ด์ฉํ ์ ์์.
- ๋ชฉ์ ์ ๋ฐ๋ผ ๋น์ฌ๊ท์ CTE, ์ฌ๊ท CTE๋ก ๋๋ ์ ์์.
์ฌ๊ท CTE
- ์ต์ด CTE๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋์ด ์ ์ฒด ๊ฒฐ๊ณผ ์งํฉ์ ์ป์ ๋๊น์ง ๋ฐ์ดํฐ์ ํ์ ์งํฉ์ ๋ฐํํ๋ CTE
- ๊ณ์ธต์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋จ
- (**) ์ฌ๊ท CTE์์ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ, OPTION ์ ์ MAXRECURSION ๊ฐ์ 0~32767 ์ฌ์ด์ ๊ฐ์ผ๋ก ์ง์ ํ์ฌ ์ต๋ ๋ฐ๋ณต ํ์๋ฅผ ์ง์ ํ ์ ์์. ๊ธฐ๋ณธ ๊ฐ์ 100์ด๋ฉฐ, 0์ผ๋ก ์ง์ ํ๋ฉด ์ต๋ ๋ฐ๋ณต ํ์๊ฐ ์์ด ๋ฌดํ์ผ๋ก ๋ฐ๋ณต๋จ.
ํ์
WITH CTE_ํ
์ด๋ธ๋ช
(์ด์ด๋ฆ1, ์ด์ด๋ฆ2, ์ด์ด๋ฆ3 ...)
AS
(
<์ฟผ๋ฆฌ๋ฌธ1 : SELECT * FROM TABLE_A>
UNION ALL
<์ฟผ๋ฆฌ๋ฌธ2 : SELECT * FROM TABLE_A JOIN CTE_ํ
์ด๋ธ๋ช
>
)
SELECT * FROM CTE_ํ
์ด๋ธ๋ช
;