2010年3月29日 星期一

Oracle SQL - 挑戰

今天被同事需求一個Oracle SQL,如下:
1. select N_U_STAFF_CD, VC_STAFF_CD, VC_EMP_CD from staff_onjob_dtl & emp_onjob_dtl 條件 VC_STAFF_CD != VC_EMP_CD inner join VC_USER_ID
2. update staff_onjob_dtl 的 VC_STAFF_CD = VC_EMP_CD 根據上面的結果

哇!什麼叫VC_STAFF_CD != VC_EMP_CD inner join VC_USER_ID,唉!儘管是同事,還是很想說我看不懂ㄋㄟ,還好最後終於明白,如下:
update staff_onjob_dtl_sh s set VC_STAFF_CD = (select VC_EMP_CD from emp_onjob_dtl_sh e where s.VC_STAFF_CD != e.VC_EMP_CD and s.VC_USER_ID = e.VC_USER_ID) 
where s.VC_STAFF_CD not in (select vc_emp_cd from emp_onjob_dtl_sh) and s.VC_USER_ID in (select vc_user_id from emp_onjob_dtl_sh)