데이터베이스/SQL

[MSSQL] MSSQL에서 MERGE 구문과 WITH절 같이 쓰기

sseozytank 2024. 8. 7.

Biguqery에서는 Merge 구문 안에 With절을 사용해도 정상적으로 작동한다.

Bigquery ver 

MERGE INTO `` AS target
USING 
(
WITH signup_log AS 
 (쿼리를 입력하세요)
SELECT a,
 FROM signup_log
) AS source ON target.date = source.date
WHEN MATCHED THEN UPDATE SET target.dau = source.dau,
WHEN NOT MATCHED THEN INSERT (date) VALUES (source.date);

 

그러나, MSSQL에서 이렇게 사용해버리면 With절이 옳지 않다는 오류가 발생하는데, 순서를 바꿔주면 가볍게 해결가능하다 

 

MSSQL에서 이렇게 사용하세요

Merge 구문을 사용하기 전에 With절로 사용할 임시 테이블들을 다 만들어주면, MERGE의  USING 파트에서 정상적으로 불러올 수 있다. 

--With 절들을 MERGE 구문 전에 모두 선언해주기
WITH signup_log AS 
 (쿼리를 입력하세요)
 
MERGE INTO `` AS target
USING 
(
SELECT a,
 FROM signup_log
) AS source ON target.date = source.date
WHEN MATCHED THEN UPDATE SET target.dau = source.dau,
WHEN NOT MATCHED THEN INSERT (date) VALUES (source.date);

 

댓글