将一个多表关联的条件查询中的多表通过 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;
05-02 05:14