티스토리 뷰
-- MERGE UPDATE
MERGE INTO IFT_FUND_STANDARD_PRICE_RESULT A
USING (
SELECT TIMS_DATE,FUND_CODE,BM_INDEX,BM_RATE FROM IFT_FUND_STANDARD_PRICE_RESULT
WHERE FUND_CODE ='10110'
AND TIMS_DATE > '20130115'
) B
ON (
A.TIMS_DATE = B.TIMS_DATE
AND A.FUND_CODE ='10112'
)
WHEN MATCHED THEN
UPDATE SET A.BM_INDEX = B.BM_INDEX, A.BM_RATE = B.BM_RATE
=============================================================================================
MERGE INTO를 사용하면 INSERT, UPDATE를 각 케이스 별로 처리할 수 있다.
한꺼번에 데이터를 덮어쓰거나 갱신할때 UPDATE와 INSERT가 동시에 처리되어야 할때가 있는데,
그러한 경우에 유용하게 쓸수 있는 구문이다.
MERGE INTO 대상테이블 A
USING (
) B
ON (
-- 매칭 조건
)
WHEN MATCHED THEN
-- 조건에 매칭될 경우 실행
UPDATE 문 (UPDATE SET ...)
WHEN NOT MATCHED THEN
-- 조건에 매칭되지 않을 경우 실행
INSERT 문 (특이한 점은 INSERT INTO가 아니다.)
예제
MERGE INTO TCOGRNTNUM A
USING (
SELECT '0009' AS GTNO_KD_CD, GTNO_KEY_VAL, MAX(POL_SEQ) AS SEQ
FROM (
SELECT PDGP_CD || SUBSTR(TO_CHAR(INS_BGN_DT, 'YYYYMMDD'), 3,2) AS GTNO_KEY_VAL, SUBSTR(POL_NO, 6, 7) POL_SEQ FROM TCTTCOT
WHERE
BIZ_SYS_CD = 'CTK'
AND JNT_TNG_YN = '2'
AND INS_BGN_DT BETWEEN TO_DATE('20121001', 'YYYYMMDD') AND TO_DATE('20121115', 'YYYYMMDD')
)
GROUP BY GTNO_KEY_VAL
) B
ON (
A.GTNO_KD_CD = B.GTNO_KD_CD
AND A.GTNO_KEY_VAL = B.GTNO_KEY_VAL
)
WHEN MATCHED THEN
UPDATE SET A.SEQ = B.SEQ, A.SYS_DEL_DIV_CD = '0', A.INPPE_ORG_ID = '0000000000', A.SYS_OCC_DTM = SYSDATE,
A.OCC_IP = '0.0.0.0', A.APP_ID = 'MIG', A.DATA_CHNG_DTM = SYSDATE
WHEN NOT MATCHED THEN
INSERT (A.GTNO_KD_CD, A.GTNO_KEY_VAL, A.SEQ, A.SYS_DEL_DIV_CD, A.INPPE_ORG_ID, A.SYS_OCC_DTM, A.OCC_IP, A.APP_ID, A.DATA_CHNG_DTM)
VALUES (B.GTNO_KD_CD, B.GTNO_KEY_VAL, B.SEQ, '0', '0000000000', SYSDATE, '0.0.0.0', 'MIG', SYSDATE)
;
'Database' 카테고리의 다른 글
[ORACLE]OUT JOIN (0) | 2013.06.14 |
---|---|
[ORACLE]LONG 데이터타입 -> VARCHAR2 데이터로 변환 (0) | 2013.06.07 |
[ORACLE] 바이트수 확인 (0) | 2013.03.07 |
[ORACLE]Oracle Default Profile 확인 (0) | 2013.02.21 |
[ORACLE]주민번호로 태어난 연도 알아내기 (0) | 2013.01.18 |
- Total
- Today
- Yesterday
- tomcat
- Oracle
- 파일
- java
- MySQL
- select
- Windows
- 백업
- table
- 테이블
- 서버
- Toad
- Shell
- eclipse
- IP
- DATABASE
- 윈도우
- user
- 설정
- mssql
- DB
- 리눅스
- 오라클
- sql
- Linux
- 데이터
- server
- 자동차
- apache
- delete
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |