Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Can this be done?
I have three fields that I need to use to update 1 field. Can this be
done in an insert/select statement?
Pers_act_rsn_cd
Pers_act_rsn_cd2
Pers_act_rsn_cd3
If any of the three contain 'TERM' in the first 4 positions then the code from position 7 is to be moved to term_cd.
Here is my statement so far...
insert into cpuser.cp_person_masters
(EMPL_ID, LAST_NAME, FIRST_NAME, MID_NAME, BIRTH_DT, HIRE_DT, GENDER, MARITAL_CD, SUPV_BADGE, ETHNIC_CD, VET_STATUS_S, VET_STATUS_V, VET_STATUS_O, VET_STATUS_R, VET_RELEASE_DT, CLASS_DESC, SKILL_CD, ORG_ID,
LOC_DESC, LOC_CD, OSUSER, START_TIME, CREW_LEADER, SHIFT, TYPING_SCORE, ODD_WORK_WEEK, RESTRICTED_DUTY, INACTIVE_DPT, OVERTIME_PROJ, TERM_DT, YTD_OVERTIME_HRS, SENIORITY_NUM, HOME_ADDR1, HOME_ADDR2, HOME_CITY, HOME_STATE, HOME_ZIP, HOME_PHONE,
TERM_CD )
select emp.empl_id, max(emp.last_name), max(emp.first_name),
max(emp.mid_name), max(emp.birth_dt), max(emp.ORIG_HIRE_DT),
max(emp.sex_cd), max(emp.marital_cd), max(ELI.MGR_EMPL_ID),
max(emp.s_race_cd), max(emp.VET_STATUS_S), max(emp.VET_STATUS_V),
max(emp.VET_STATUS_O), max(emp.VET_STATUS_R), max(emp.VET_RELEASE_DT),
max(ELI.TITLE_DESC), max(ELI.DETL_JOB_CD), max(ELI.ORG_ID),
max(LL.LAB_LOC_DESC), max(ELI.LAB_LOC_CD), max(UI.USER_ID),
MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),31, substr(GU.udef_txt,1,4))) START_TIME, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),28, substr(GU.udef_txt,1,6))) CREW_LEADER, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),19, substr(GU.udef_id,1,3))) SHIFT, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),24, to_char(GU.udef_amt,'999'))) TYPING_SCORE,
MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),25, substr(GU.udef_id,1,6))) ODD_WORK_WEEK, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),29, substr(GU.udef_id,1,1))) RESTRICTED_DUTY, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),30, substr(GU.udef_id,1,2))) INACTIVE_DPT, MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),32, substr(GU.udef_txt,1,2))) OVERTIME_PROJ, max(EMP.TERM_DT),
MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),50, GU.udef_AMT)) YTD_Overtime_HRS,
MAX(DECODE(UPPER(GU.UDEF_LBL_KEY),51, substr(GU.udef_txt,1,5))) SENIORITY_NUM, max(EMP.LN_1_ADR), max(EMP.LN_2_ADR), max(EMP.CITY_NAME),
max(EMP.MAIL_STATE_DC), max(EMP.POSTAL_CD), max(EP.PHONE_ID),
MAX(DECODE(UPPER(SUBSTR(ELI.PERS_ACT_RSN_CD,1,4)),'TERM', substr(ELI.PERS_ACT_RSN_CD,7,1))) TERM_CD,
FROM DELTEK.EMPL EMP, DELTEK.LAB_LOCATION LL, DELTEK.GENL_UDEF GU, DELTEK.EMPL_LAB_INFO ELI, DELTEK.USER_ID UI, DELTEK.EMPL_PHONE EP WHERE EMP.EMPL_ID = ELI.EMPL_ID AND ELI.EFFECT_DT = (SELECT MAX(EFFECT_DT)
FROM DELTEK.EMPL_LAB_INFO ELI2 WHERE ELI2.EMPL_ID = ELI.EMPL_ID) AND EMP.EMPL_ID = UI.EMPL_ID(+)
AND ELI.LAB_LOC_CD = LL.LAB_LOC_CD AND EMP.EMPL_ID = GU.GENL_ID(+) AND EMP.EMPL_ID = EP.EMPL_ID(+) AND EP.PHONE_TYPE_DC = 'HOME' GROUP BY EMP.EMPL_ID, genl_id
/
-- http://www.freelists.org/webpage/oracle-lReceived on Mon Aug 22 2005 - 07:06:41 CDT
![]() |
![]() |