MERGE INTO EVENT_MASTER A
USING ( SELECT
EVENT_KEY,
GOOD_KEY,
COMP_CD,
EVENT_NAME,
EVENT_START_DAY,
EVENT_START_TIME,
EVENT_END_DAY,
EVENT_END_TIME,
EVENT_START_CITY,
EVENT_AIR_CODE,
EVENT_NIGHT_CNT,
EVENT_DAY_CNT
FROM AFFILIANT_FREETOUR_START
WHERE EVENT_AIR_CODE IS NOT NULL
AND EVENT_START_DAY IS NOT NULL ) B
ON ( A.ETC_GOOD_ID = B.EVENT_KEY )
WHEN MATCHED THEN
UPDATE
SET A.EVENT_NM = B.EVENT_NAME,
A.DISP_NM = B.EVENT_NAME,
A.EV_DAY_CNT = B.EV_DAY_CNT,
A.START_DAY = B.EVENT_START_DAY,
A.START_TIME = B.EVENT_START_TIME,
A.EV_CAN_CD = NULL,
A.AIR_CD = B.EVENT_AIR_CODE,
A.UPD_DT = SYSDATE,
A.UPD_EMP_NO = 'BATCH'
WHEN NOT MATCHED THEN
INSERT(A.EVENT_KEY, A.GOOD_KEY, A.GO_CD,
A.GOOD_TYPE_CD, A.AREA_CD, A.SUB_AREA_CD,
A.START_CD, A.ETC_GOOD_ID, A.EVENT_NM,
A.DISP_NM, A.EV_DAY_CNT, A.SEASON_SEQ,
A.START_DAY, A.START_TIME, A.END_DAY,
A.END_TIME, A.AIR_CD, A.EVENT_COMP_CD,
A.INS_DT, A.INS_EMP_NO, A.CHA_EMP_NO1)
SELECT FN_AFF_EVENT_SEQ(GM.GOOD_KEY, B.EVENT_START_DAY, B.EVENT_AIR_CODE), GM.GOOD_KEY, GM.GO_CD,
GM.GOOD_TYPE_CD, GM.AREA_CD, GM.SUB_AREA_CD,
NVL(B.EVENT_START_CITY, '05'), B.EVENT_KEY, B.EVENT_NAME,
B.EVENT_NAME, B.EVENT_DAY_CNT, 1,
B.EVENT_START_DAY, B.EVENT_START_TIME, B.EVENT_END_DAY,
B.EVENT_END_TIME, B.EVENT_AIR_CODE, GM.GOOD_COMP_CD,
SYSDATE, GM.INS_EMP_NO, GM.INS_EMP_NO
FROM GOODS_MASTER GM
WHERE GM.ETC_GOOD_ID = B.GOOD_KEY
AND GM.GOOD_COMP_CD = 'FT'
AND GM.GOODS_DESC IS NULL
AND GM.SUB_AREA_CD IS NOT NULL
빨간색 부분을 보면 INSERT부분에서 VALUES부분을 한 건조회해서 필요한 데이타를 INSERT시에 같이 넣어서
진행을 하려고 하니 오류가 발생하는데 MARGE에서는 INSERT시에 SELECT를 사용 못하나요?
|