将一个多表关联的条件查询中的多表通过 create select 转化成一张单表的sql、改为会话级别临时表 【我】

 

 

将一个多表关联的条件查询中的多表通过 create   select  转化成一张单表的sql

将结果改为创建一个会话级别的临时表:

 

-- 根据下面这两个sql
CREATE TABLE revenue_cp AS SELECT /*+PARALLEL(12)*/
       e.STD_PRVNCE_CD STD_PRVNCE_CD, 
       e.STD_LATN_CD STD_LATN_CD,
       e. CUST_ID ,e.PROD_TYPE,
       m.party_id party_id,
        e.TY_12   TY_12,
        e.TY_11   TY_11,
        e.TY_10   TY_10,
        e.TY_9    TY_9 ,
        e.TY_8    TY_8 ,
        e.TY_7    TY_7 ,
        e.TY_6    TY_6 ,
        e.TY_5    TY_5 ,
        e.TY_4    TY_4 ,
        e.TY_3    TY_3 ,
        e.TY_2    TY_2 ,
        e.TY_1    TY_1 ,
        e.LY_12   LY_12,
        e.LY_11   LY_11,
        e.LY_10   LY_10,
        e.LY_9    LY_9 ,
        e.LY_8    LY_8 ,
        e.LY_7    LY_7 ,
        e.LY_6    LY_6 ,
        e.LY_5    LY_5 ,
        e.LY_4    LY_4 ,
        e.LY_3    LY_3 ,
        e.LY_2    LY_2 ,
        e.LY_1    LY_1 
     FROM EDA_CUST_INC e, CUST_CP_MERGE m
     WHERE 1 = 1
       and e.CUST_ID = m.CUST_ID
       AND e.STD_LATN_CD = m.STD_LATN_CD
       and m.PARTY_ID IS NOT NULL
       AND UPPER(m.PARTY_ID) != 'NULL';
       
       
 CREATE TABLE revenue_all as select r.*, p.IDENTITY_TYPE, o.INDUSTRY_TYPE_ID
  from revenue_cp r
  left join party p on r.party_id=p.party_id
  left join party_org o on r.party_id = o.party_id;


--得到下面创建临时表的SQL




-- 创建回话级别临时表
CREATE GLOBAL TEMPORARY table REVENUE_ALL2
(
  STD_PRVNCE_CD    VARCHAR2(20),
  STD_LATN_CD      VARCHAR2(20),
  CUST_ID          VARCHAR2(20),
  PROD_TYPE        VARCHAR2(20),
  PARTY_ID         NUMBER(16),
  TY_12            NUMBER(16,2),
  TY_11            NUMBER(16,2),
  TY_10            NUMBER(16,2),
  TY_9             NUMBER(16,2),
  TY_8             NUMBER(16,2),
  TY_7             NUMBER(16,2),
  TY_6             NUMBER(16,2),
  TY_5             NUMBER(16,2),
  TY_4             NUMBER(16,2),
  TY_3             NUMBER(16,2),
  TY_2             NUMBER(16,2),
  TY_1             NUMBER(16,2),
  LY_12            NUMBER(16,2),
  LY_11            NUMBER(16,2),
  LY_10            NUMBER(16,2),
  LY_9             NUMBER(16,2),
  LY_8             NUMBER(16,2),
  LY_7             NUMBER(16,2),
  LY_6             NUMBER(16,2),
  LY_5             NUMBER(16,2),
  LY_4             NUMBER(16,2),
  LY_3             NUMBER(16,2),
  LY_2             NUMBER(16,2),
  LY_1             NUMBER(16,2),
  IDENTITY_TYPE    NUMBER(4),
  INDUSTRY_TYPE_ID NUMBER(16)
)
ON COMMIT PRESERVE ROWS;



--向临时表中插数据

insert into REVENUE_ALL2 select r.*, p.IDENTITY_TYPE, o.INDUSTRY_TYPE_ID
  from (SELECT /*+PARALLEL(12)*/
       e.STD_PRVNCE_CD STD_PRVNCE_CD, 
       e.STD_LATN_CD STD_LATN_CD,
       e. CUST_ID ,e.PROD_TYPE,
       m.party_id party_id,
        e.TY_12   TY_12,
        e.TY_11   TY_11,
        e.TY_10   TY_10,
        e.TY_9    TY_9 ,
        e.TY_8    TY_8 ,
        e.TY_7    TY_7 ,
        e.TY_6    TY_6 ,
        e.TY_5    TY_5 ,
        e.TY_4    TY_4 ,
        e.TY_3    TY_3 ,
        e.TY_2    TY_2 ,
        e.TY_1    TY_1 ,
        e.LY_12   LY_12,
        e.LY_11   LY_11,
        e.LY_10   LY_10,
        e.LY_9    LY_9 ,
        e.LY_8    LY_8 ,
        e.LY_7    LY_7 ,
        e.LY_6    LY_6 ,
        e.LY_5    LY_5 ,
        e.LY_4    LY_4 ,
        e.LY_3    LY_3 ,
        e.LY_2    LY_2 ,
        e.LY_1    LY_1 
     FROM EDA_CUST_INC e, CUST_CP_MERGE m
     WHERE 1 = 1
       and e.CUST_ID = m.CUST_ID
       AND e.STD_LATN_CD = m.STD_LATN_CD
       and m.PARTY_ID IS NOT NULL
       AND UPPER(m.PARTY_ID) != 'NULL') r
  left join party p on r.party_id=p.party_id
  left join party_org o on r.party_id = o.party_id;




select * from REVENUE_ALL2;

 

posted @ 2019-11-06 15:07  戈博折刀  阅读(427)  评论(0编辑  收藏  举报