반응형
UPDATE TAB1 SET 
EMPLOYEES = '20090801'
FROM TAB1 A
LEFT JOIN (
SELECT 
     TASK_MAIN_CODE
   , REG_DATE
   , TASK_SUB_CODE 
FROM TAB2
WHERE TASK_MAIN_CODE = '조건1' 
AND REG_DATE = '조건2'
AND ISNULL(DELETE_FLAG,'0') = '0'
GROUP BY TASK_MAIN_CODE, REG_DATE, TASK_SUB_CODE

) B
ON A.CODE = B.TASK_MAIN_CODE
AND A.REG_DATE = B.REG_DATE
AND A.SUB_CODE = B.TASK_SUB_CODE
 
WHERE A.CODE = '조건1'
AND A.REG_DATE = '조건2'
AND ISNULL(A.DELETE_FLAG,'0') = '0'
AND  ISNULL(B.TASK_MAIN_CODE,'-1') = -1

tab2가 tba1을 외부참조한상태에서  tab1은 tab2에 연결(외부참조한) 데이터가 없는 값만 update하려는 쿼리이다.
tab1와 tab2가 1:n의 관계이기 때문에 서브쿼리로 group by한상태에서 left join하였고 tab2의 TASK_MAIN_CODE 값이 없는
(isnull로 -1처리된) 결과값들만 update하도록 작성된 쿼리이다.
반응형
//기본 함수
select getdate()
//문자형으로 가져오기 ('20091231')
SELECT      CONVERT(varchar(8),getdate(),112) 

+ Recent posts