[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 에 사용할 수 있다.