[MS-SQL] SELECT의 결과 값을 UPDATE에 사용하기 – With 사용법

이게 조금 복잡한데…

우선 A라는 테이블의 데이터를 UserID, SUM(Value)로 합산한 결과 값이 있다.

UserID SUM(Value)
aaa 1000
bbb 2000
ccc 300

이걸
B라는 테이블에 업데이트를 하려고 한다.

보통 한개의 결과 값만 있다면
Where 로 UserID를 매치 시키면 해결이 됐지만….
이 경우

Update TableA Set Value = Sum(value) --SUM 사용 불가
FROM TableA A Join TableB B
On A.UserID = B.UserID

에서 Sum 사용 불가 오류가 났다.

그러다 알아낸게 With …

With TableC(UserID, Val) AS
(
  Select A.UserID, IsNull(Sum(B.Val), 100) From TableA A Left Outer Join TableB B on A.UserID = B.UserID Group By A.UserID
)
Update TableA Set Value = val
FROM TableA A join TableC C
on A.UserID = C.UserID

로 해결이 됐다.

WITH 테이블(컬럼1, 컬럼2, ...) AS
(
  SELECT 컬럼....
)

은 ( ) 안의 셀렉트문에 나온 컬럼들을 WITH 에 적힌 테이블이름 (컬럼 순서) 로 만들어주고
이걸 Update문의 Join 에 사용할 수 있다.

Post Author: 김 키티

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다