MSSQL UPDATE 할때 같은TABLE에서 레코드1을 이용해 레코드2 값을 바꿀때
보통 업데이트 사용할 때는
UPDATE
SET
WHERE
문법이 가장 기초적일 것입니다.
하지만, 다른 응용 방법이면서 획기적인 방법이 있다는거 아십니까? 정말 좋은 방법입니다. 그 내용을 공유할까 합니다.
UPDATE
SET
FROM
WHERE 도 가능하다는것! 입니다.
이게 무슨말이냐면요.
위에 데이터 값을 가지고 테스트 해볼 것입니다.
용)급료와임금 이라는 레코드의 D_AMT1값의 0.1% 값을
용)퇴직급여 라는 레코드의 D_AMT1에 넣고 싶다는 가정.
--분기별에서 판)퇴직급여 = 판)급료와임금 * 0.1
UPDATE #TMP_T
SET D_AMT_Q1 = ROUND(A.D_AMT_Q1*0.1, 0, 1)
, D_AMT_Q2 = ROUND(A.D_AMT_Q2*0.1, 0, 1)
, D_AMT_Q3 = ROUND(A.D_AMT_Q3*0.1, 0, 1)
, D_AMT_Q4 = ROUND(A.D_AMT_Q4*0.1, 0, 1)
, D_AMT_H1 = ROUND(A.D_AMT_H1*0.1, 0, 1)
, D_AMT_H2 = ROUND(A.D_AMT_H2*0.1, 0, 1)
, D_AMT_TOT = ROUND(A.D_AMT_TOT*0.1, 0, 1)
FROM ( SELECT * FROM #TMP_T WHERE ACCOUNTCD='61102000') A, #TMP_T B
WHERE B.ACCOUNTCD='61106000'
위 그림을 보면 알다시피 FROM절에 같은 테이블이지만 다른 조건으로 레코드 한개를 뽑아 왔으며, 그 테이블A를 이용하여같은 테이블이지만 다른 레코드에 값을 대입하는 쿼리입니다. 이 방법을 응용한다면 상당히 많은 곳에 쓰일 듯 합니다. 감사합니다.