• 利用merge优化


    create table a1(TP_END_DATE NUMBER,WK_END_DATE NUMBER,
    MTH_START_DATE NUMBER,
    MTH_END_DATE NUMBER,
    TIME_PERD_START_DATE NUMBER);
    
    create table a2(TP_END_DATE DATE ,WK_END_DATE DATE,MTH_START_DATE DATE,MTH_END_DATE DATE,DAY_DATE DATE) ;
    
    
    SQL> select * from a1;
    
    TP_END_DATE WK_END_DATE MTH_START_DATE MTH_END_DATE TIME_PERD_START_DATE
    ----------- ----------- -------------- ------------ --------------------
       19990101    19990101       19990101	   19990101		29990101
    
    SQL> select * from a2;
    
    TP_END_DA WK_END_DA MTH_START MTH_END_D DAY_DATE
    --------- --------- --------- --------- ---------
    01-JAN-99 01-JAN-99 01-JAN-99 01-JAN-99 01-JAN-99
    
    
    BEGIN
    
    Update  ADWGU_DICFR.DICFR_ORDR_CUT_FCT a
    Set
    TP_END_DATE =
     ( select TO_NUMBER(TO_CHAR((TP_END_DATE),'YYYYMMDD')) from CAL_MASTR_DIM b 
    where a.TIME_PERD_START_DATE= TO_NUMBER(TO_CHAR((b.DAY_DATE),'YYYYMMDD')));
    
    Update ADWGU_DICFR.DICFR_ORDR_CUT_FCT a
    Set
    WK_END_DATE = 
    ( select TO_NUMBER(TO_CHAR((WK_END_DATE),'YYYYMMDD') from CAL_MASTR_DIM b where
     a.TIME_PERD_START_DATE= TO_NUMBER(TO_CHAR((b.DAY_DATE),'YYYYMMDD')));
    
    Update  ADWGU_DICFR.DICFR_ORDR_CUT_FCT a
    Set
    MTH_START_DATE = 
    ( select TO_NUMBER(TO_CHAR((MTH_START_DATE),'YYYYMMDD') from CAL_MASTR_DIM b where 
    a.TIME_PERD_START_DATE= TO_NUMBER(TO_CHAR((b.DAY_DATE),'YYYYMMDD')));
    
    Update  ADWGU_DICFR.DICFR_ORDR_CUT_FCT a
    Set
    MTH_END_DATE = 
    ( select TO_NUMBER(TO_CHAR((MTH_END_DATE),'YYYYMMDD') from CAL_MASTR_DIM b where 
    a.TIME_PERD_START_DATE= TO_NUMBER(TO_CHAR((b.DAY_DATE),'YYYYMMDD')));
    
    COMMIT;
    
    END;
    /
    
    
    改为merge:
    merge into a1 a
    using a2 b
    on (a.TIME_PERD_START_DATE = TO_NUMBER(TO_CHAR((b.DAY_DATE), 'YYYYMMDD')))
    WHEN MATCHED THEN
      UPDATE
         SET a.TP_END_DATE = TO_NUMBER(TO_CHAR((b.TP_END_DATE), 'YYYYMMDD')),
             a.WK_END_DATE = TO_NUMBER(TO_CHAR((b.WK_END_DATE),'YYYYMMDD')),
              a.MTH_START_DATE = TO_NUMBER(TO_CHAR((b.MTH_START_DATE),'YYYYMMDD')),
               a.MTH_END_DATE = TO_NUMBER(TO_CHAR((b.MTH_END_DATE),'YYYYMMDD'))
  • 相关阅读:
    浅谈flume
    浅谈storm
    浅谈zookeeper
    IntelliJ IDEA 使用教程
    浅谈spark
    添加本地jar包到maven仓库
    eclipse通过maven进行打编译
    pom.xml中添加远程仓库
    maven编译错误maven-assembly-plugin:2.2-beta-5:assembly (default-cli) on project
    最长上升子序列
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3798054.html
Copyright © 2020-2023  润新知