zoukankan      html  css  js  c++  java
  • 利用WITH AS改写SQL

    报表程序中一段SQL语句。

    优化前

    返回:3952
    耗时:224s
    SQL 代码:

    select to_date(nvl(pro.value, '1900-01-01 00:00:00'),
                   'YYYY-MM-DD HH24:MI:SS') as LAST_UPDATE_TIME,
           p.productcode as COM_COVERAGE_CODE,
           p.policyno as POLICY_NO,
           p.productcode as POLICY_TYPE,
           nvl(pro3.value, '$$500002000004') as SALES_CHANNEL,
           p.inceptiondate as EFFECTIVE_DATE,
           p.terminationdate as EXPIRE_DATE,
           1 as INSURED_NO,
           null as BANK_CODE,
           to_date(pro1.value, 'YYYY-MM-DD HH24:MI:SS') as APPLICATION_DATE,
           p.issuedate as ACCEPT_DATE,
           '05' as SALES_TYPE,
           p.handler as SALES_CODE,
           pro2.staffname as SALES_NAME,
           p.agencyid as SALES_CHANNEL_CODE,
           pro4.value as SALES_CHANNEL_NAME,
           pro5.value as BUSINESS_ADDRESS,
           decode(p.renewalpolicyno, null, '01', '02') as CONTRACT_SOURCE,
           p.applicationno as CONTRACT_NO,
           null as RENEWAL_METHOD,
           p.policystatus as POLICY_STATUS,
           '0' as REJECTION,
           p.suminsured as SUM_INSURED,
           p.suminsured as EFFECTIVE_SUMINSURED,
           p.premium as PREMIUM,
           p.premium as CURRENT_PREMIUM,
           null as YEAR_PREMIUM,
           case
             when r4.paymentno > 1 then
              '09'
             else
              '01'
           end as PAYMENT_METHOD,
           null as PAYMENT_YEARS,
           decode(r4.paymentno, 0, 1, r4.paymentno) as PAYMENT_NO,
           p.productcode as POLICY_HOLDER_PRO,
           1 as POLICY_HOLDER_NUM,
           1 as EFFECTIVE_INSURED_NUM,
           p.renewalpolicyno as FORMER_POLICY_NO,
           pro6.specialremark as SPECIALRE_MARK,
           null as REGULAR_CLEARING_MARK,
           null as REGULAR_CLEARING,
           null as REGULAR_CLEARING_DATE,
           null as PREMIUMDUE_DATE,
           '0' as REALTIME_CLAIM_FLAG,
           '0' as POLICY_LOAN,
           '0' as AUTO_PAIDUP,
           p.coinsuranceflag as CO_INSURANCE,
           p.coinsurancerole as LEAD_CO_INSURANCE,
           null as CASH_VALUE,
           null as POLICY_REGISTER_ADDR,
           null as DEBIT_BANK,
           null as DEBIT_ACCOUNT,
           null as DEBIT_NAME
      from policy p
      left join role r
        on p.topactualid = r.topactualid
       and r.kind = 'DATEINFO'
      left join property pro
        on r.topactualid = pro.topactualid
       and r.actualid = pro.parentactualid
       and r.parentagreementid = pro.parentagreementid
       and r.topagreementid = pro.topagreementid
       and pro.kind = 'UNDERWRITINGDATE'
      left join property pro1
        on pro1.topactualid = p.topactualid
       and pro1.kind = 'APPLICATIONDATE'
      left join (select x.policyno as policyno,
                        x.topactualid as topactualid,
                        x.parentactualid as parentactualid,
                        max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,
                        max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffname
                   from (select p.policyno         as policyno,
                                pro.topactualid    as topactualid,
                                pro.parentactualid as parentactualid,
                                pro.kind           as kind,
                                pro.name           as name,
                                pro.value          as value
                           from policy p
                           left join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'HANDLER'
                           left join property pro
                             on pro.topactualid = r.topactualid
                            and pro.parentactualid = r.actualid
                            and pro.kind in ('SERIALNO', 'STAFFNAME')
                          where p.productcode in ('00070001',
                                                  '00070002',
                                                  '00070003',
                                                  '00070004',
                                                  '00070005',
                                                  '00070006',
                                                  '00130001')
                            and p.policystatus = '$$900001106001'
                            and p.endorsementid is null
                            and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                            and (p.uniquecode like '013100%' or
                                p.uniquecode like '011000%')) x
                  group by policyno, topactualid, parentactualid) pro2
        on pro2.policyno = p.policyno
       and pro2.topactualid = p.topactualid
       and pro2.serialno = '1'
      left join role r3
        on p.topactualid = r3.topactualid
       and r3.kind = 'INTERMEDIARYINFO'
      left join property pro3
        on r3.topactualid = pro3.topactualid
       and r3.actualid = pro3.parentactualid
       and r3.parentagreementid = pro3.parentagreementid
       and r3.topagreementid = pro3.topagreementid
       and pro3.kind = 'INTERMEDIARYTYPE'
      left join property pro4
        on r3.topactualid = pro4.topactualid
       and r3.actualid = pro4.parentactualid
       and r3.parentagreementid = pro4.parentagreementid
       and r3.topagreementid = pro4.topagreementid
       and pro4.kind = 'INTERMEDIARYNAME'
      left join property pro5
        on r3.topactualid = pro5.topactualid
       and r3.actualid = pro5.parentactualid
       and r3.parentagreementid = pro5.parentagreementid
       and r3.topagreementid = pro5.topagreementid
       and pro5.kind = 'OFFICEADDRESS'
      left join (select pro.policyno,
                        pro.topactualid,
                        replace(wm_concat(pro.text), ', ', '?') as specialremark
                   from (select p.policyno, p.topactualid, pro2.value as text
                           from policy p
                          inner join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'SPECIALAGREEMENTITEM'
                           left join property pro1
                             on r.topactualid = pro1.topactualid
                            and r.actualid = pro1.parentactualid
                            and r.parentagreementid = pro1.parentagreementid
                            and r.topagreementid = pro1.topagreementid
                            and pro1.kind = 'SERIALNO'
                           left join property pro2
                             on r.topactualid = pro2.topactualid
                            and r.actualid = pro2.parentactualid
                            and r.parentagreementid = pro2.parentagreementid
                            and r.topagreementid = pro2.topagreementid
                            and pro2.kind = 'SPECIALAGREEMENTTEXT'
                          where p.productcode in ('00070001',
                                                  '00070002',
                                                  '00070003',
                                                  '00070004',
                                                  '00070005',
                                                  '00070006',
                                                  '00130001')
                            and p.policystatus = '$$900001106001'
                            and p.endorsementid is null
                            and (p.uniquecode like '013100%' or
                                p.uniquecode like '011000%')
                            and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                          order by pro1.value) pro
                  group by pro.policyno, pro.topactualid) pro6
        on p.policyno = pro6.policyno
       and p.topactualid = pro6.topactualid
      left join (select p.policyno, p.topactualid, count(*) as paymentno
                   from policy p
                   left join role r
                     on r.topactualid = p.topactualid
                    and r.kind = 'PAYMENTSCHEDULEONAPPLICATION'
                  where p.productcode in ('00070001',
                                          '00070002',
                                          '00070003',
                                          '00070004',
                                          '00070005',
                                          '00070006',
                                          '00130001')
                    and p.policystatus = '$$900001106001'
                    and p.endorsementid is null
                    and (p.uniquecode like '013100%' or
                        p.uniquecode like '011000%')
                    and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                  group by p.policyno, p.topactualid) r4
        on p.policyno = r4.policyno
       and p.topactualid = r4.topactualid
     where p.productcode in ('00070001',
                             '00070002',
                             '00070003',
                             '00070004',
                             '00070005',
                             '00070006',
                             '00130001')
       AND p.policystatus = '$$900001106001'
       and p.endorsementid is null
       and (p.uniquecode like '013100%' or p.uniquecode like '011000%')
       and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
     order by ACCEPT_DATE, POLICY_NO
    
    
    Plan hash value: 3635118867
    
    ----------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                     | Name               | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                              |                    | 29315 |   127M|       |   367K  (1)| 01:13:34 |
    |   1 |  SORT ORDER BY                                |                    | 29315 |   127M|   458M|   367K  (1)| 01:13:34 |
    |   2 |   NESTED LOOPS OUTER                          |                    | 29315 |   127M|       |   340K  (1)| 01:08:01 |
    |   3 |    NESTED LOOPS OUTER                         |                    | 29315 |   125M|       |   232K  (1)| 00:46:31 |
    |   4 |     NESTED LOOPS OUTER                        |                    |  4447 |    18M|       |   216K  (1)| 00:43:24 |
    |   5 |      NESTED LOOPS OUTER                       |                    |  2534 |    10M|       |   206K  (1)| 00:41:24 |
    |   6 |       NESTED LOOPS OUTER                      |                    |  2534 |    10M|       |   197K  (1)| 00:39:33 |
    |   7 |        NESTED LOOPS OUTER                     |                    |  2534 |    10M|       |   188K  (1)| 00:37:41 |
    |*  8 |         HASH JOIN OUTER                       |                    |  2534 |    10M|  5592K|   179K  (1)| 00:35:50 |
    |   9 |          NESTED LOOPS OUTER                   |                    |  2534 |  5557K|       | 72919   (1)| 00:14:36 |
    |* 10 |           HASH JOIN RIGHT OUTER               |                    |  1461 |  3140K|       | 68293   (1)| 00:13:40 |
    |  11 |            VIEW                               |                    | 11415 |   367K|       |  6364   (1)| 00:01:17 |
    |  12 |             HASH GROUP BY                     |                    | 11415 |  1036K|  2360K|  6364   (1)| 00:01:17 |
    |* 13 |              HASH JOIN OUTER                  |                    | 11415 |  1036K|       |  6115   (1)| 00:01:14 |
    |* 14 |               TABLE ACCESS FULL               | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
    |* 15 |               INDEX RANGE SCAN                | IDX_ROLE_TEST2     |   380K|  8907K|       |  1851   (1)| 00:00:23 |
    |* 16 |            HASH JOIN OUTER                    |                    |  1461 |  3093K|       | 61929   (1)| 00:12:24 |
    |* 17 |             TABLE ACCESS FULL                 | POLICY             |  1461 |   208K|       |  4261   (1)| 00:00:52 |
    |  18 |             VIEW                              |                    |  6221 |    11M|       | 57668   (1)| 00:11:33 |
    |  19 |              SORT GROUP BY                    |                    |  6221 |    11M|    24M| 57668   (1)| 00:11:33 |
    |  20 |               VIEW                            |                    |  6221 |    11M|       | 55036   (1)| 00:11:01 |
    |  21 |                SORT ORDER BY                  |                    |  6221 |  1312K|  2856K| 55036   (1)| 00:11:01 |
    |  22 |                 NESTED LOOPS OUTER            |                    |  6221 |  1312K|       | 54741   (1)| 00:10:57 |
    |  23 |                  NESTED LOOPS OUTER           |                    |  6221 |  1002K|       | 31933   (1)| 00:06:24 |
    |  24 |                   NESTED LOOPS                |                    |  6221 |   692K|       |  9125   (1)| 00:01:50 |
    |* 25 |                    TABLE ACCESS FULL          | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
    |  26 |                    TABLE ACCESS BY INDEX ROWID| ROLE               |     4 |   180 |       |     5   (0)| 00:00:01 |
    |* 27 |                     INDEX RANGE SCAN          | IDX_ROLE_TEST2     |     4 |       |       |     3   (0)| 00:00:01 |
    |* 28 |                   TABLE ACCESS BY INDEX ROWID | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 29 |                    INDEX RANGE SCAN           | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |* 30 |                  TABLE ACCESS BY INDEX ROWID  | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 31 |                   INDEX RANGE SCAN            | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |  32 |           TABLE ACCESS BY INDEX ROWID         | ROLE               |     2 |    90 |       |     4   (0)| 00:00:01 |
    |* 33 |            INDEX RANGE SCAN                   | IDX_ROLE_TEST2     |     1 |       |       |     3   (0)| 00:00:01 |
    |  34 |          VIEW                                 |                    | 73354 |   141M|       | 98838   (2)| 00:19:47 |
    |* 35 |           FILTER                              |                    |       |       |       |            |          |
    |  36 |            HASH GROUP BY                      |                    | 73354 |  9813K|  1092M| 98838   (2)| 00:19:47 |
    |  37 |             NESTED LOOPS OUTER                |                    |  7335K|   958M|       | 18161   (1)| 00:03:38 |
    |  38 |              NESTED LOOPS OUTER               |                    |  9913 |   968K|       |  9364   (1)| 00:01:53 |
    |* 39 |               TABLE ACCESS FULL               | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
    |  40 |               TABLE ACCESS BY INDEX ROWID     | ROLE               |     7 |   217 |       |     6   (0)| 00:00:01 |
    |* 41 |                INDEX RANGE SCAN               | IDX_ROLE_TEST2     |     7 |       |       |     3   (0)| 00:00:01 |
    |  42 |              VIEW                             |                    |   740 | 27380 |       |     1   (0)| 00:00:01 |
    |  43 |               INLIST ITERATOR                 |                    |       |       |       |            |          |
    |  44 |                TABLE ACCESS BY INDEX ROWID    | PROPERTY           |     1 |    37 |       |     6   (0)| 00:00:01 |
    |* 45 |                 INDEX RANGE SCAN              | IDX_PROPERTY_TEST2 |     1 |       |       |     5   (0)| 00:00:01 |
    |* 46 |         TABLE ACCESS BY INDEX ROWID           | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 47 |          INDEX RANGE SCAN                     | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |* 48 |        TABLE ACCESS BY INDEX ROWID            | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 49 |         INDEX RANGE SCAN                      | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |* 50 |       TABLE ACCESS BY INDEX ROWID             | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 51 |        INDEX RANGE SCAN                       | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |  52 |      TABLE ACCESS BY INDEX ROWID              | PROPERTY           |     2 |    60 |       |     5   (0)| 00:00:01 |
    |* 53 |       INDEX RANGE SCAN                        | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    |  54 |     TABLE ACCESS BY INDEX ROWID               | ROLE               |     7 |   315 |       |     6   (0)| 00:00:01 |
    |* 55 |      INDEX RANGE SCAN                         | IDX_ROLE_TEST2     |     7 |       |       |     3   (0)| 00:00:01 |
    |* 56 |    TABLE ACCESS BY INDEX ROWID                | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 57 |     INDEX RANGE SCAN                          | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       8 - access("PRO2"."TOPACTUALID"(+)="P"."TOPACTUALID" AND "PRO2"."POLICYNO"(+)="P"."POLICYNO")
      10 - access("P"."TOPACTUALID"="R4"."TOPACTUALID"(+) AND "P"."POLICYNO"="R4"."POLICYNO"(+))
      13 - access("R"."TOPACTUALID"(+)="P"."TOPACTUALID")
      14 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND 
                  ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR 
                  "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR 
                  "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND 
                  "P"."POLICYSTATUS"='$$900001106001')
      15 - access("R"."KIND"(+)='PAYMENTSCHEDULEONAPPLICATION')
      16 - access("P"."TOPACTUALID"="PRO6"."TOPACTUALID"(+) AND "P"."POLICYNO"="PRO6"."POLICYNO"(+))
      17 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND 
                  ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR 
                  "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR 
                  "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND 
                  "P"."POLICYSTATUS"='$$900001106001')
      25 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND 
                  ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR 
                  "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR 
                  "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND 
                  "P"."POLICYSTATUS"='$$900001106001')
      27 - access("R"."KIND"='SPECIALAGREEMENTITEM' AND "R"."TOPACTUALID"="P"."TOPACTUALID")
      28 - filter("R"."TOPAGREEMENTID"="PRO2"."TOPAGREEMENTID"(+) AND 
                  "R"."PARENTAGREEMENTID"="PRO2"."PARENTAGREEMENTID"(+))
      29 - access("PRO2"."KIND"(+)='SPECIALAGREEMENTTEXT' AND "R"."TOPACTUALID"="PRO2"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO2"."PARENTACTUALID"(+))
      30 - filter("R"."TOPAGREEMENTID"="PRO1"."TOPAGREEMENTID"(+) AND 
                  "R"."PARENTAGREEMENTID"="PRO1"."PARENTAGREEMENTID"(+))
      31 - access("PRO1"."KIND"(+)='SERIALNO' AND "R"."TOPACTUALID"="PRO1"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO1"."PARENTACTUALID"(+))
      33 - access("R3"."KIND"(+)='INTERMEDIARYINFO' AND "P"."TOPACTUALID"="R3"."TOPACTUALID"(+))
      35 - filter(MAX(DECODE("PRO"."KIND",'SERIALNO',"PRO"."VALUE",''))='1')
      39 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND 
                  ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR 
                  "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR 
                  "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND 
                  "P"."POLICYSTATUS"='$$900001106001')
      41 - access("R"."KIND"(+)='HANDLER' AND "R"."TOPACTUALID"(+)="P"."TOPACTUALID")
      45 - access(("PRO"."KIND"='SERIALNO' OR "PRO"."KIND"='STAFFNAME') AND "PRO"."TOPACTUALID"="R"."TOPACTUALID" AND 
                  "PRO"."PARENTACTUALID"="R"."ACTUALID")
      46 - filter("R3"."TOPAGREEMENTID"="PRO3"."TOPAGREEMENTID"(+) AND 
                  "R3"."PARENTAGREEMENTID"="PRO3"."PARENTAGREEMENTID"(+))
      47 - access("PRO3"."KIND"(+)='INTERMEDIARYTYPE' AND "R3"."TOPACTUALID"="PRO3"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO3"."PARENTACTUALID"(+))
      48 - filter("R3"."TOPAGREEMENTID"="PRO4"."TOPAGREEMENTID"(+) AND 
                  "R3"."PARENTAGREEMENTID"="PRO4"."PARENTAGREEMENTID"(+))
      49 - access("PRO4"."KIND"(+)='INTERMEDIARYNAME' AND "R3"."TOPACTUALID"="PRO4"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO4"."PARENTACTUALID"(+))
      50 - filter("R3"."TOPAGREEMENTID"="PRO5"."TOPAGREEMENTID"(+) AND 
                  "R3"."PARENTAGREEMENTID"="PRO5"."PARENTAGREEMENTID"(+))
      51 - access("PRO5"."KIND"(+)='OFFICEADDRESS' AND "R3"."TOPACTUALID"="PRO5"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO5"."PARENTACTUALID"(+))
      53 - access("PRO1"."KIND"(+)='APPLICATIONDATE' AND "PRO1"."TOPACTUALID"(+)="P"."TOPACTUALID")
      55 - access("R"."KIND"(+)='DATEINFO' AND "P"."TOPACTUALID"="R"."TOPACTUALID"(+))
      56 - filter("R"."TOPAGREEMENTID"="PRO"."TOPAGREEMENTID"(+) AND 
                  "R"."PARENTAGREEMENTID"="PRO"."PARENTAGREEMENTID"(+))
      57 - access("PRO"."KIND"(+)='UNDERWRITINGDATE' AND "R"."TOPACTUALID"="PRO"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO"."PARENTACTUALID"(+))

    分析

    分析SQL代码,可以看出访问多次policy表,谓词条件也一样

      left join (select x.policyno as policyno,
                        x.topactualid as topactualid,
                        x.parentactualid as parentactualid,
                        max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,
                        max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffname
                   from (select p.policyno         as policyno,
                                pro.topactualid    as topactualid,
                                pro.parentactualid as parentactualid,
                                pro.kind           as kind,
                                pro.name           as name,
                                pro.value          as value
                           from policy p
                           left join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'HANDLER'
                           left join property pro
                             on pro.topactualid = r.topactualid
                            and pro.parentactualid = r.actualid
                            and pro.kind in ('SERIALNO', 'STAFFNAME')
                          where p.productcode in ('00070001',
                                                  '00070002',
                                                  '00070003',
                                                  '00070004',
                                                  '00070005',
                                                  '00070006',
                                                  '00130001')
                            and p.policystatus = '$$900001106001'
                            and p.endorsementid is null
                            and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                            and (p.uniquecode like '013100%' or
                                p.uniquecode like '011000%')) x
                  group by policyno, topactualid, parentactualid) pro2
    -----------------------------------------------------------------------
      left join (select pro.policyno,
                        pro.topactualid,
                        replace(wm_concat(pro.text), ', ', '?') as specialremark
                   from (select p.policyno, p.topactualid, pro2.value as text
                           from policy p
                          inner join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'SPECIALAGREEMENTITEM'
                           left join property pro1
                             on r.topactualid = pro1.topactualid
                            and r.actualid = pro1.parentactualid
                            and r.parentagreementid = pro1.parentagreementid
                            and r.topagreementid = pro1.topagreementid
                            and pro1.kind = 'SERIALNO'
                           left join property pro2
                             on r.topactualid = pro2.topactualid
                            and r.actualid = pro2.parentactualid
                            and r.parentagreementid = pro2.parentagreementid
                            and r.topagreementid = pro2.topagreementid
                            and pro2.kind = 'SPECIALAGREEMENTTEXT'
                          where p.productcode in ('00070001',
                                                  '00070002',
                                                  '00070003',
                                                  '00070004',
                                                  '00070005',
                                                  '00070006',
                                                  '00130001')
                            and p.policystatus = '$$900001106001'
                            and p.endorsementid is null
                            and (p.uniquecode like '013100%' or
                                p.uniquecode like '011000%')
                            and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                          order by pro1.value) pro
                  group by pro.policyno, pro.topactualid) pro6
    
    
    -------------------------------------------------------------------
      left join (select p.policyno, p.topactualid, count(*) as paymentno
                   from policy p
                   left join role r
                     on r.topactualid = p.topactualid
                    and r.kind = 'PAYMENTSCHEDULEONAPPLICATION'
                  where p.productcode in ('00070001',
                                          '00070002',
                                          '00070003',
                                          '00070004',
                                          '00070005',
                                          '00070006',
                                          '00130001')
                    and p.policystatus = '$$900001106001'
                    and p.endorsementid is null
                    and (p.uniquecode like '013100%' or
                        p.uniquecode like '011000%')
                    and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
                  group by p.policyno, p.topactualid) r4
    

    优化

    耗时:10s
    返回:3952

    利用with as 先把访问policy表数据提取并缓存成临时表,然后再进行关联查询。

    with p as     
             (select policyno,topactualid from policy    
                  where productcode in ('00070001',
                                          '00070002',
                                          '00070003',
                                          '00070004',
                                          '00070005',
                                          '00070006',
                                          '00130001')
                    and policystatus = '$$900001106001'
                    and endorsementid is null
                    and (uniquecode like '013100%' or
                        uniquecode like '011000%')
                    and ISSUEDATE > to_date('20160411', 'YYYYMMDD'))
    select to_date(nvl(pro.value, '1900-01-01 00:00:00'),
                   'YYYY-MM-DD HH24:MI:SS') as LAST_UPDATE_TIME,
           p.productcode as COM_COVERAGE_CODE,
           p.policyno as POLICY_NO,
           p.productcode as POLICY_TYPE,
           nvl(pro3.value, '$$500002000004') as SALES_CHANNEL,
           p.inceptiondate as EFFECTIVE_DATE,
           p.terminationdate as EXPIRE_DATE,
           1 as INSURED_NO,
           null as BANK_CODE,
           to_date(pro1.value, 'YYYY-MM-DD HH24:MI:SS') as APPLICATION_DATE,
           p.issuedate as ACCEPT_DATE,
           '05' as SALES_TYPE,
           p.handler as SALES_CODE,
           pro2.staffname as SALES_NAME,
           p.agencyid as SALES_CHANNEL_CODE,
           pro4.value as SALES_CHANNEL_NAME,
           pro5.value as BUSINESS_ADDRESS,
           decode(p.renewalpolicyno, null, '01', '02') as CONTRACT_SOURCE,
           p.applicationno as CONTRACT_NO,
           null as RENEWAL_METHOD,
           p.policystatus as POLICY_STATUS,
           '0' as REJECTION,
           p.suminsured as SUM_INSURED,
           p.suminsured as EFFECTIVE_SUMINSURED,
           p.premium as PREMIUM,
           p.premium as CURRENT_PREMIUM,
           null as YEAR_PREMIUM,
           case
             when r4.paymentno > 1 then
              '09'
             else
              '01'
           end as PAYMENT_METHOD,
           null as PAYMENT_YEARS,
           decode(r4.paymentno, 0, 1, r4.paymentno) as PAYMENT_NO,
           p.productcode as POLICY_HOLDER_PRO,
           1 as POLICY_HOLDER_NUM,
           1 as EFFECTIVE_INSURED_NUM,
           p.renewalpolicyno as FORMER_POLICY_NO,
           pro6.specialremark as SPECIALRE_MARK,
           null as REGULAR_CLEARING_MARK,
           null as REGULAR_CLEARING,
           null as REGULAR_CLEARING_DATE,
           null as PREMIUMDUE_DATE,
           '0' as REALTIME_CLAIM_FLAG,
           '0' as POLICY_LOAN,
           '0' as AUTO_PAIDUP,
           p.coinsuranceflag as CO_INSURANCE,
           p.coinsurancerole as LEAD_CO_INSURANCE,
           null as CASH_VALUE,
           null as POLICY_REGISTER_ADDR,
           null as DEBIT_BANK,
           null as DEBIT_ACCOUNT,
           null as DEBIT_NAME
      from policy p
      left join role r
        on p.topactualid = r.topactualid
       and r.kind = 'DATEINFO'
      left join property pro
        on r.topactualid = pro.topactualid
       and r.actualid = pro.parentactualid
       and r.parentagreementid = pro.parentagreementid
       and r.topagreementid = pro.topagreementid
       and pro.kind = 'UNDERWRITINGDATE'
      left join property pro1
        on pro1.topactualid = p.topactualid
       and pro1.kind = 'APPLICATIONDATE'
      left join (select x.policyno as policyno,
                        x.topactualid as topactualid,
                        x.parentactualid as parentactualid,
                        max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,
                        max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffname
                   from (select p.policyno         as policyno,
                                pro.topactualid    as topactualid,
                                pro.parentactualid as parentactualid,
                                pro.kind           as kind,
                                pro.name           as name,
                                pro.value          as value
                           from  p
                           left join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'HANDLER'
                           left join property pro
                             on pro.topactualid = r.topactualid
                            and pro.parentactualid = r.actualid
                            and pro.kind in ('SERIALNO', 'STAFFNAME')) x
                  group by policyno, topactualid, parentactualid) pro2
        on pro2.policyno = p.policyno
       and pro2.topactualid = p.topactualid
       and pro2.serialno = '1'
      left join role r3
        on p.topactualid = r3.topactualid
       and r3.kind = 'INTERMEDIARYINFO'
      left join property pro3
        on r3.topactualid = pro3.topactualid
       and r3.actualid = pro3.parentactualid
       and r3.parentagreementid = pro3.parentagreementid
       and r3.topagreementid = pro3.topagreementid
       and pro3.kind = 'INTERMEDIARYTYPE'
      left join property pro4
        on r3.topactualid = pro4.topactualid
       and r3.actualid = pro4.parentactualid
       and r3.parentagreementid = pro4.parentagreementid
       and r3.topagreementid = pro4.topagreementid
       and pro4.kind = 'INTERMEDIARYNAME'
      left join property pro5
        on r3.topactualid = pro5.topactualid
       and r3.actualid = pro5.parentactualid
       and r3.parentagreementid = pro5.parentagreementid
       and r3.topagreementid = pro5.topagreementid
       and pro5.kind = 'OFFICEADDRESS'
      left join (select pro.policyno,
                        pro.topactualid,
                        replace(wm_concat(pro.text), ', ', '?') as specialremark
                   from (select p.policyno, p.topactualid, pro2.value as text
                           from  p
                          inner join role r
                             on r.topactualid = p.topactualid
                            and r.kind = 'SPECIALAGREEMENTITEM'
                           left join property pro1
                             on r.topactualid = pro1.topactualid
                            and r.actualid = pro1.parentactualid
                            and r.parentagreementid = pro1.parentagreementid
                            and r.topagreementid = pro1.topagreementid
                            and pro1.kind = 'SERIALNO'
                           left join property pro2
                             on r.topactualid = pro2.topactualid
                            and r.actualid = pro2.parentactualid
                            and r.parentagreementid = pro2.parentagreementid
                            and r.topagreementid = pro2.topagreementid
                            and pro2.kind = 'SPECIALAGREEMENTTEXT'
                          order by pro1.value) pro
                  group by pro.policyno, pro.topactualid) pro6
        on p.policyno = pro6.policyno
       and p.topactualid = pro6.topactualid
      left join (select p.policyno, p.topactualid, count(*) as paymentno
                   from  p
                   left join role r
                     on r.topactualid = p.topactualid
                    and r.kind = 'PAYMENTSCHEDULEONAPPLICATION'
                  group by p.policyno, p.topactualid) r4
        on p.policyno = r4.policyno
       and p.topactualid = r4.topactualid
     where p.productcode in ('00070001',
                             '00070002',
                             '00070003',
                             '00070004',
                             '00070005',
                             '00070006',
                             '00130001')
       AND p.policystatus = '$$900001106001'
       and p.endorsementid is null
       and (p.uniquecode like '013100%' or p.uniquecode like '011000%')
       and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')
     order by ACCEPT_DATE, POLICY_NO;
    
    
    Plan hash value: 3669690643
    
    --------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                      | Name                        | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    --------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                               |                             | 29315 |   127M|       |   332K  (1)| 01:06:29 |
    |   1 |  TEMP TABLE TRANSFORMATION                     |                             |       |       |       |            |          |
    |   2 |   LOAD AS SELECT                               |                             |       |       |       |            |          |
    |*  3 |    TABLE ACCESS FULL                           | POLICY                      |  1461 |    98K|       |  4261   (1)| 00:00:52 |
    |   4 |   SORT ORDER BY                                |                             | 29315 |   127M|   458M|   328K  (1)| 01:05:37 |
    |   5 |    NESTED LOOPS OUTER                          |                             | 29315 |   127M|       |   300K  (1)| 01:00:04 |
    |   6 |     NESTED LOOPS OUTER                         |                             | 29315 |   125M|       |   192K  (1)| 00:38:34 |
    |   7 |      NESTED LOOPS OUTER                        |                             |  4447 |    18M|       |   177K  (1)| 00:35:28 |
    |   8 |       NESTED LOOPS OUTER                       |                             |  2534 |    10M|       |   167K  (1)| 00:33:28 |
    |   9 |        NESTED LOOPS OUTER                      |                             |  2534 |    10M|       |   157K  (1)| 00:31:36 |
    |  10 |         NESTED LOOPS OUTER                     |                             |  2534 |    10M|       |   148K  (1)| 00:29:45 |
    |* 11 |          HASH JOIN OUTER                       |                             |  2534 |    10M|  5592K|   139K  (1)| 00:27:53 |
    |  12 |           NESTED LOOPS OUTER                   |                             |  2534 |  5557K|       | 64290   (1)| 00:12:52 |
    |* 13 |            HASH JOIN RIGHT OUTER               |                             |  1461 |  3140K|       | 59665   (1)| 00:11:56 |
    |  14 |             VIEW                               |                             | 11414 |   367K|       |  1991   (1)| 00:00:24 |
    |  15 |              HASH GROUP BY                     |                             | 11414 |   490K|  1176K|  1991   (1)| 00:00:24 |
    |* 16 |               HASH JOIN OUTER                  |                             | 11414 |   490K|       |  1860   (1)| 00:00:23 |
    |  17 |                VIEW                            |                             |  1461 | 29220 |       |     5   (0)| 00:00:01 |
    |  18 |                 TABLE ACCESS FULL              | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
    |* 19 |                INDEX RANGE SCAN                | IDX_ROLE_TEST2              |   380K|  8907K|       |  1851   (1)| 00:00:23 |
    |* 20 |             HASH JOIN OUTER                    |                             |  1461 |  3093K|       | 57674   (1)| 00:11:33 |
    |* 21 |              TABLE ACCESS FULL                 | POLICY                      |  1461 |   208K|       |  4261   (1)| 00:00:52 |
    |  22 |              VIEW                              |                             |  6221 |    11M|       | 53413   (1)| 00:10:41 |
    |  23 |               SORT GROUP BY                    |                             |  6221 |    11M|    24M| 53413   (1)| 00:10:41 |
    |  24 |                VIEW                            |                             |  6221 |    11M|       | 50780   (1)| 00:10:10 |
    |  25 |                 SORT ORDER BY                  |                             |  6221 |  1312K|  2856K| 50780   (1)| 00:10:10 |
    |  26 |                  NESTED LOOPS OUTER            |                             |  6221 |  1312K|       | 50485   (1)| 00:10:06 |
    |  27 |                   NESTED LOOPS OUTER           |                             |  6221 |  1002K|       | 27677   (1)| 00:05:33 |
    |  28 |                    NESTED LOOPS                |                             |  6221 |   692K|       |  4869   (1)| 00:00:59 |
    |  29 |                     VIEW                       |                             |  1461 |    98K|       |     5   (0)| 00:00:01 |
    |  30 |                      TABLE ACCESS FULL         | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
    |  31 |                     TABLE ACCESS BY INDEX ROWID| ROLE                        |     4 |   180 |       |     5   (0)| 00:00:01 |
    |* 32 |                      INDEX RANGE SCAN          | IDX_ROLE_TEST2              |     4 |       |       |     3   (0)| 00:00:01 |
    |* 33 |                    TABLE ACCESS BY INDEX ROWID | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 34 |                     INDEX RANGE SCAN           | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |* 35 |                   TABLE ACCESS BY INDEX ROWID  | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 36 |                    INDEX RANGE SCAN            | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |  37 |            TABLE ACCESS BY INDEX ROWID         | ROLE                        |     2 |    90 |       |     4   (0)| 00:00:01 |
    |* 38 |             INDEX RANGE SCAN                   | IDX_ROLE_TEST2              |     1 |       |       |     3   (0)| 00:00:01 |
    |  39 |           VIEW                                 |                             | 73346 |   141M|       | 67762   (2)| 00:13:34 |
    |* 40 |            FILTER                              |                             |       |       |       |            |          |
    |  41 |             HASH GROUP BY                      |                             | 73346 |  6303K|   714M| 67762   (2)| 00:13:34 |
    |  42 |              NESTED LOOPS OUTER                |                             |  7334K|   615M|       | 13903   (1)| 00:02:47 |
    |  43 |               NESTED LOOPS OUTER               |                             |  9912 |   493K|       |  5109   (1)| 00:01:02 |
    |  44 |                VIEW                            |                             |  1461 | 29220 |       |     5   (0)| 00:00:01 |
    |  45 |                 TABLE ACCESS FULL              | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
    |  46 |                TABLE ACCESS BY INDEX ROWID     | ROLE                        |     7 |   217 |       |     6   (0)| 00:00:01 |
    |* 47 |                 INDEX RANGE SCAN               | IDX_ROLE_TEST2              |     7 |       |       |     3   (0)| 00:00:01 |
    |  48 |               VIEW                             |                             |   740 | 27380 |       |     1   (0)| 00:00:01 |
    |  49 |                INLIST ITERATOR                 |                             |       |       |       |            |          |
    |  50 |                 TABLE ACCESS BY INDEX ROWID    | PROPERTY                    |     1 |    37 |       |     6   (0)| 00:00:01 |
    |* 51 |                  INDEX RANGE SCAN              | IDX_PROPERTY_TEST2          |     1 |       |       |     5   (0)| 00:00:01 |
    |* 52 |          TABLE ACCESS BY INDEX ROWID           | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 53 |           INDEX RANGE SCAN                     | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |* 54 |         TABLE ACCESS BY INDEX ROWID            | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 55 |          INDEX RANGE SCAN                      | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |* 56 |        TABLE ACCESS BY INDEX ROWID             | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 57 |         INDEX RANGE SCAN                       | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |  58 |       TABLE ACCESS BY INDEX ROWID              | PROPERTY                    |     2 |    60 |       |     5   (0)| 00:00:01 |
    |* 59 |        INDEX RANGE SCAN                        | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    |  60 |      TABLE ACCESS BY INDEX ROWID               | ROLE                        |     7 |   315 |       |     6   (0)| 00:00:01 |
    |* 61 |       INDEX RANGE SCAN                         | IDX_ROLE_TEST2              |     7 |       |       |     3   (0)| 00:00:01 |
    |* 62 |     TABLE ACCESS BY INDEX ROWID                | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
    |* 63 |      INDEX RANGE SCAN                          | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
    --------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter("ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "ENDORSEMENTID" IS NULL AND ("PRODUCTCODE"='00070001' OR 
                  "PRODUCTCODE"='00070002' OR "PRODUCTCODE"='00070003' OR "PRODUCTCODE"='00070004' OR "PRODUCTCODE"='00070005' OR 
                  "PRODUCTCODE"='00070006' OR "PRODUCTCODE"='00130001') AND ("UNIQUECODE" LIKE '013100%' OR "UNIQUECODE" LIKE '011000%') AND 
                  "POLICYSTATUS"='$$900001106001')
      11 - access("PRO2"."TOPACTUALID"(+)="P"."TOPACTUALID" AND "PRO2"."POLICYNO"(+)="P"."POLICYNO")
      13 - access("P"."TOPACTUALID"="R4"."TOPACTUALID"(+) AND "P"."POLICYNO"="R4"."POLICYNO"(+))
      16 - access("R"."TOPACTUALID"(+)="P"."TOPACTUALID")
      19 - access("R"."KIND"(+)='PAYMENTSCHEDULEONAPPLICATION')
      20 - access("P"."TOPACTUALID"="PRO6"."TOPACTUALID"(+) AND "P"."POLICYNO"="PRO6"."POLICYNO"(+))
      21 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND 
                  ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' 
                  OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE 
                  '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')
      32 - access("R"."KIND"='SPECIALAGREEMENTITEM' AND "R"."TOPACTUALID"="P"."TOPACTUALID")
      33 - filter("R"."TOPAGREEMENTID"="PRO2"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO2"."PARENTAGREEMENTID"(+))
      34 - access("PRO2"."KIND"(+)='SPECIALAGREEMENTTEXT' AND "R"."TOPACTUALID"="PRO2"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO2"."PARENTACTUALID"(+))
      35 - filter("R"."TOPAGREEMENTID"="PRO1"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO1"."PARENTAGREEMENTID"(+))
      36 - access("PRO1"."KIND"(+)='SERIALNO' AND "R"."TOPACTUALID"="PRO1"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO1"."PARENTACTUALID"(+))
      38 - access("R3"."KIND"(+)='INTERMEDIARYINFO' AND "P"."TOPACTUALID"="R3"."TOPACTUALID"(+))
      40 - filter(MAX(DECODE("PRO"."KIND",'SERIALNO',"PRO"."VALUE",''))='1')
      47 - access("R"."KIND"(+)='HANDLER' AND "R"."TOPACTUALID"(+)="P"."TOPACTUALID")
      51 - access(("PRO"."KIND"='SERIALNO' OR "PRO"."KIND"='STAFFNAME') AND "PRO"."TOPACTUALID"="R"."TOPACTUALID" AND 
                  "PRO"."PARENTACTUALID"="R"."ACTUALID")
      52 - filter("R3"."TOPAGREEMENTID"="PRO3"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO3"."PARENTAGREEMENTID"(+))
      53 - access("PRO3"."KIND"(+)='INTERMEDIARYTYPE' AND "R3"."TOPACTUALID"="PRO3"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO3"."PARENTACTUALID"(+))
      54 - filter("R3"."TOPAGREEMENTID"="PRO4"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO4"."PARENTAGREEMENTID"(+))
      55 - access("PRO4"."KIND"(+)='INTERMEDIARYNAME' AND "R3"."TOPACTUALID"="PRO4"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO4"."PARENTACTUALID"(+))
      56 - filter("R3"."TOPAGREEMENTID"="PRO5"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO5"."PARENTAGREEMENTID"(+))
      57 - access("PRO5"."KIND"(+)='OFFICEADDRESS' AND "R3"."TOPACTUALID"="PRO5"."TOPACTUALID"(+) AND 
                  "R3"."ACTUALID"="PRO5"."PARENTACTUALID"(+))
      59 - access("PRO1"."KIND"(+)='APPLICATIONDATE' AND "PRO1"."TOPACTUALID"(+)="P"."TOPACTUALID")
      61 - access("R"."KIND"(+)='DATEINFO' AND "P"."TOPACTUALID"="R"."TOPACTUALID"(+))
      62 - filter("R"."TOPAGREEMENTID"="PRO"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO"."PARENTAGREEMENTID"(+))
      63 - access("PRO"."KIND"(+)='UNDERWRITINGDATE' AND "R"."TOPACTUALID"="PRO"."TOPACTUALID"(+) AND 
                  "R"."ACTUALID"="PRO"."PARENTACTUALID"(+))
  • 相关阅读:
    To Do List
    Linux 替换文本中对空格为下划线
    Jumpserver开源堡垒机
    用jmeter编写脚本做实时线上监控
    Supervisor使用详解
    Python模块之pysnooper
    Java读取json文件并进行处理
    IOS APP自动化测试 真机测试 遇到的坑
    测试人员入职必须了解的东西包括下面一些内容
    linux 和MacBook下的批替换
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514713.html
Copyright © 2011-2022 走看看