컴퓨터/MSSQL

MSSQL WITH 구문 사용 방법 (단일(?), 다중(?) 변수)

k1asd1 2021. 3. 24. 18:14
728x90
반응형

MSSQL 선입 선출 관련 쿼리를 작성하다 WITH문을 사용했었습니다. 임시 테이블 사용 시 간단하게 사용할 수 있어서 요즘 자주 사용하는 편입니다.

 

※ 단일, 다중 변수.. 공식적인 용어는 아닙니다. 다만 제가 구분하기 위해 붙여보았으니 오해 없으시기 바랍니다.

 

WITH 구문의 사용 방법은 간단합니다만, 이 또한 기록으로 남기기 위해 글을 작성합니다.


* WITH 구문 단일 변수 사용 예제

WITH temp AS (
    SELECT 1 AS num, '단일' AS gubun, 'with 구문' AS contents, '0001' AS userid
     UNION ALL
    SELECT 2 AS num, '단일' AS gubun, '변수' AS contents, '0002' AS userid
)

SELECT num, gubun, contents, userid
  FROM temp

 

- 사용 방법

WITH 변수명1 AS (

    -- 임시 테이블에 사용될 쿼리문 (원하는 쿼리문 작성)

    SELECT 칼럼1, 칼럼2, 칼럼3, 칼럼4

       FROM 테이블

)

 

SELECT 칼럼1, 칼럼2, 칼럼3, ....

  FROM 변수명1


* 예제 결과

num gubun contents userid
1 단일 with 구문 0001
2 단일 변수 0002

* WITH 구문 다중 변수 사용 예제

WITH temp AS (
    SELECT 1 AS num, '다중' AS gubun, 'with 구문' AS contents, '0001' AS userid
     UNION ALL
    SELECT 2 AS num, '다중' AS gubun, '변수' AS contents, '0002' AS userid
),

temp1 AS (
    SELECT 1 AS num, '다중' AS gubun, '0001' AS userid, '이바니' AS usernm
     UNION ALL
    SELECT 2 AS num, '다중' AS gubun, '0002' AS userid, '이반이' AS usernm
)

SELECT a.num, a.gubun, a.contents, a.userid, b.usernm
  FROM temp a
  JOIN temp1 b ON a.num = b.num AND a.gubun = b.gubun

 

- 사용 방법

WITH 변수명1 AS (

    -- 임시 테이블에 사용될 쿼리문 (원하는 쿼리문 작성)

    SELECT 칼럼1, 칼럼2, 칼럼3, 칼럼4

       FROM 테이블1

),

 

변수명2  AS (

    SELECT 칼럼1, 칼럼2, 칼럼3, 칼럼4

       FROM 테이블2

)

 

SELECT 칼럼1, 칼럼2, 칼럼3, ....

  FROM 변수명1

  JOIN 변수명2 .....

 

※ 변수명 선언 시 변수명1 다음에 ',' (콤마)로 구분하여 원하는 변수명 사용하면 됩니다.


* 예제 결과

num gubun contents userid usernm
1 다중 with 구문 0001 이바니
2 다중 변수 0002 이반이

 

이상입니다.

728x90
반응형