본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

WITH 절 CTE (Common Table Expression) 임시테이블?

WITH 절 CTE (Common Table Expression) 임시테이블?

 

 

 - 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되던것을 대신할수있다.

 

비재귀적, 재귀적 2가지 방식이 있는데,

비재귀적 방식만을 보겠습니다.

 

형식

WITH 테이블명(열이름)

AS

( 쿼리문.. )

SELECT 열이름 FROM 테이블명 ; (UPDATE 등도 가능하지만 주로 사용되는 건 SELECT)

 

Ex) 각 품목(goods)별 총판매액(total) 보고자 할때

WITH Purchase1(goods, total) AS

( SELECT goods, SUM(price * amount) FROM purchaseTbl GROUP BY goods )

SELECT * FROM Purchase1 ORDER BY total DESC; -- 가장 총판매액이 높은 순서대로 조회

 

위의 형식을 응용해서 2개 이상의 CTE테이블을 만들수 있습니다.

WITH

AAA (컬럼들) AS ( 쿼리1) ,

BBB (컬럼들) AS ( 쿼리2) ,

...

 

단, CTE의 WITH절이 나올경우

앞의 문장이후에 'GO'를 써주거나, 세미콜론(;) 으로 확실히 앞 문장과 분리해줘야 합니다.

 

SELECT * FROM purchaseTbl ;

GO

WITH Purchase1 ...