database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39938 게시물 읽기
No. 39938
MERGE 관련하여 질문 드립니다.
작성자
이민욱(ggiggibbong)
작성일
2012-12-21 17:40
조회수
5,838

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를 사용 못하나요?

 

이 글에 대한 댓글이 총 1건 있습니다.

merge문에서 insert ... select 구문은 사용할 수 없으며

using ( ... ) b 구문에서 AFFILIANT_FREETOUR_START와 GOODS_MASTER 를 조인해서

insert ... values ... 구문으로 처리하시면 될 것 같습니다.

전영식(garam111)님이 2013-01-04 20:35에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39955SYSTEM 증가 문제 [1]
사이베이스가 싫어
2012-12-30
5076
39946한 row를 여러줄로 표시 하려면 어떻게 하나요? [1]
천재음악가
2012-12-28
6608
39940프로시저 문의 [1]
약쟁이총각
2012-12-26
6040
39938MERGE 관련하여 질문 드립니다. [1]
이민욱
2012-12-21
5838
39936통계 산출 쿼리 마무리가 안됩니다. [1]
노근배
2012-12-20
7506
39933도움부탁드립니다..ㅠㅠ 쿼리검증질문 [2]
초보
2012-12-18
5490
39932고정으로 나오게 [1]
도와주세요.
2012-12-18
6451
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다