HOME   로그인   회원가입
    
회원가입
비밀번호 찾기 자동로긴
이전게시판
   free_board
   건강게시판
   오라클DB
   Linux
   HTML/javascript
   질문과 답
호서기
   이미지게시판  
   건강게시판  
   음악자료  
   성준이 게시판  
[일반] 일괄처리 쿼리문
  호석 님께서 쓴 글입니다 - 121.♡.39.7 읽음:2669  
// -----------
SELECT * FROM STRNCDTB@WEBPOS WHERE SALE_DATE BETWEEN '20130125' AND '20130206' AND SUBSTR(MS_NO,1,4)='E009' AND CARD_CO='999';

-- STRNCDTB UPDATE
DECLARE

  CURSOR CARD_INFO IS
  SELECT * FROM TMPSTRNCDTB WHERE MS_NO='E00901' AND SALE_DATE='20130129' AND POS_NO='04' ORDER BY SALE_DATE;

BEGIN

  FOR C IN CARD_INFO LOOP
 
    UPDATE STRNCDTB@WEBPOS
    SET    CARD_CO = C.ORG_CARD_CO
    WHERE  SALE_DATE = C.SALE_DATE
    AND    MS_NO     = C.MS_NO
    AND    POS_NO    = C.POS_NO
    AND    BILL_NO   = C.BILL_NO
    AND    VAN_CD    = C.VAN_CD
    AND    CARD_CO   = C.CARD_CO;
   
  END LOOP;

END;



--SDCARDTB UPDATE
DECLARE
 
  CURSOR CARD_SUM IS
  SELECT MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA
        ,NVL(DECODE(SALE_FG,'0',COUNT(*)),0)      AS CARD_CNT
        ,NVL(DECODE(SALE_FG,'0',SUM(APPR_AMT)),0) AS CARD_AMT
        ,NVL(DECODE(SALE_FG,'1',COUNT(*)),0)      AS C_CARD_CNT
        ,NVL(DECODE(SALE_FG,'1',SUM(APPR_AMT)),0) AS C_CARD_AMT
  FROM   STRNCDTB WHERE MS_NO='E00901' AND SALE_DATE='20130129' AND POS_NO='04'
  GROUP BY MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA,SALE_FG
  ;
 
BEGIN

    FOR C IN CARD_SUM LOOP
   
      MERGE INTO SDCARDTB A
      USING (SELECT * FROM DUAL) B
      ON    (    A.MS_NO = C.MS_NO AND A.SALE_DATE = C.SALE_DATE AND A.CARD_CO = C.CARD_CO AND A.APPR_FG = C.APPR_FG )
      WHEN MATCHED THEN     
         UPDATE
         SET    CARD_CNT   = C.CARD_CNT
              , CARD_AMT   = C.CARD_AMT
              , C_CARD_CNT = C.C_CARD_CNT
              , C_CARD_AMT = C.C_CARD_AMT     
      WHEN NOT MATCHED THEN
         INSERT (MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA,CARD_CNT,CARD_AMT,C_CARD_CNT,C_CARD_AMT)
         VALUES (C.MS_NO,C.SALE_DATE,C.CARD_CO,C.APPR_FG,C.CHAIN_NO,C.CHAIN_AREA,C.CARD_CNT,C.CARD_AMT,C.C_CARD_CNT,C.C_CARD_AMT);
   
    END LOOP;

END;

-- SDCARD DELETE
DELETE FROM SDCARDTB WHERE MS_NO='E00901' AND SALE_DATE='20130129'  AND CARD_CO='999';

-- STRNCDTB UPDATE
DECLARE

  CURSOR CARD_INFO IS
  SELECT * FROM TMPSTRNCDTB WHERE MS_NO='E00903' AND SALE_DATE BETWEEN '20130129' AND '20130205' AND POS_NO='01' ORDER BY SALE_DATE;

BEGIN

  FOR C IN CARD_INFO LOOP
 
    UPDATE STRNCDTB@WEBPOS
    SET    CARD_CO = C.ORG_CARD_CO
    WHERE  SALE_DATE = C.SALE_DATE
    AND    MS_NO     = C.MS_NO
    AND    POS_NO    = C.POS_NO
    AND    BILL_NO   = C.BILL_NO
    AND    VAN_CD    = C.VAN_CD
    AND    CARD_CO   = C.CARD_CO;
   
  END LOOP;

END;

--SDCARDTB UPDATE
DECLARE
 
  CURSOR CARD_SUM IS
  SELECT MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA
        ,NVL(DECODE(SALE_FG,'0',COUNT(*)),0)      AS CARD_CNT
        ,NVL(DECODE(SALE_FG,'0',SUM(APPR_AMT)),0) AS CARD_AMT
        ,NVL(DECODE(SALE_FG,'1',COUNT(*)),0)      AS C_CARD_CNT
        ,NVL(DECODE(SALE_FG,'1',SUM(APPR_AMT)),0) AS C_CARD_AMT
  FROM   STRNCDTB WHERE MS_NO='E00903' AND SALE_DATE BETWEEN '20130129' AND '20130205' AND POS_NO='01'
  GROUP BY MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA,SALE_FG
  ;
 
BEGIN

    FOR C IN CARD_SUM LOOP
   
      MERGE INTO SDCARDTB A
      USING (SELECT * FROM DUAL) B
      ON    (    A.MS_NO = C.MS_NO AND A.SALE_DATE = C.SALE_DATE AND A.CARD_CO = C.CARD_CO AND A.APPR_FG = C.APPR_FG )
      WHEN MATCHED THEN     
         UPDATE
         SET    CARD_CNT   = C.CARD_CNT
              , CARD_AMT   = C.CARD_AMT
              , C_CARD_CNT = C.C_CARD_CNT
              , C_CARD_AMT = C.C_CARD_AMT     
      WHEN NOT MATCHED THEN
         INSERT (MS_NO,SALE_DATE,CARD_CO,APPR_FG,CHAIN_NO,CHAIN_AREA,CARD_CNT,CARD_AMT,C_CARD_CNT,C_CARD_AMT)
         VALUES (C.MS_NO,C.SALE_DATE,C.CARD_CO,C.APPR_FG,C.CHAIN_NO,C.CHAIN_AREA,C.CARD_CNT,C.CARD_AMT,C.C_CARD_CNT,C.C_CARD_AMT);
   
    END LOOP;

END;

DELETE FROM SDCARDTB WHERE MS_NO='E00903' AND SALE_DATE BETWEEN '20130129' AND '20130205'  AND CARD_CO='999';


목록

분류 선택
일반 일괄처리 쿼리문 호석 13-02-21 2670
137 일반 mysql 튜닝 최적화 호석 12-04-07 2778
136 일반 오라클의 sequence 초기화 호석 11-11-24 3177
135 일반 레드햇 엔터프라이즈4에 오라클9i(9.2.0.4)설치 호석 11-10-07 59182
134 일반 not in 보다는 exist 를 많이 사용해보자 호석 11-04-04 2796
133 일반 INDEX의 사용여부 확인하기 호석 11-04-01 2217
132 일반 Standby Database 구축[ GOOD GOOD ] 호석 11-03-16 2437
131 일반 Linux 및 Windows 환경을 위한 PHP, Oracle 10g Instant Client 설치 호석 11-01-07 2300
130 일반 토드나 오렌지 대체 무료 오라클 툴 호석 10-12-30 2735
129 일반 시퀀스 사용방법 ( SEQUENCE ) 호석 10-04-22 3628
128 일반 오라클 라이센스 유져 산정법 호석 10-04-13 3723
127 일반 오라클 백업 방법 ( cold 백업, hot백업, export 백업 ) 호석 10-02-17 4119
126 일반 오라클 설치시 자바관련 에러처리 케이스 호석 10-02-17 3507
125 일반 pfile과 spfile 의 차이점 호석 10-02-01 4038
124 일반 Standby Database 구축 호석 10-01-31 3676
1 [2] [3] [4] [5] [6] [7] [8] [9] [10]  다음맨끝

 
Copyright © zenos.pe.kr. All rights reserved.