zoukankan      html  css  js  c++  java
  • 正常的谓词推入效率

    explain  plan for 
    with zz as 
    (select t.br_org_name,                                                           
                                     t.sd_org_name,                                        
                                     t.rw_date,                                            
                                     t.cust_no,                                            
                                     t.cust_name,                                          
                                     t.zd_num,                                             
                                     t.status,                                             
                                     t.sett_acct,                                          
                                     t.dr_date,   
                                     t.xuhao,
                                     t.shul ,                                         
                                     t.sett_acct as agret                                  
                               from M_POS_CUST_SETT t                                      
                              where t.sett_acct not like '621028%'                         
                             union all                                                     
                             select    t.br_org_name,                                         
                                    t.sd_org_name,                                         
                                    t.rw_date,                                             
                                    t.cust_no,                                             
                                    t.cust_name,                                           
                                    t.zd_num,                                              
                                    t.status,                                              
                                    B.AGMT_ID     sett_acct,                               
                                    t.dr_date,     
                                    t.xuhao,
                                    t.shul ,                                        
                                    t.sett_acct   as agret                                 
                               from M_POS_CUST_SETT t                                      
                               left join DWF.F_AGT_CADB_BOOK_H A                           
                                 on t.sett_acct = a.agmt_id                                
                                and A.START_DT <= TO_DATE('2014-03-31', 'YYYY-MM-DD') 
                                AND A.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')    
                                AND A.MASTER_CARD_NO IS NOT NULL                           
                               -- AND SUBSTR(A.CARD_NEW_STATUS, 8, 1) <> '6'                 
                               LEFT JOIN DWF.F_AGT_CADB_ACCT ee                            
                                 on ee.START_DT <=                                         
                                    TO_DATE('2014-03-31', 'YYYY-MM-DD')               
                                AND ee.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')   
                                and A.MASTER_CARD_NO = EE.AGMT_ID                          
                               LEFT JOIN DWF.F_AGT_SAVB_ACCTINFO_H b                       
                                 on b.START_DT <= TO_DATE('2014-03-31', 'YYYY-MM-DD') 
                                AND b.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')    
                                and EE.ACCT_NO = B.AGMT_ID                                 
                                AND EE.ACCT_SEQNO = B.ACCT_SEQNO                           
                              where t.sett_acct like '621028%'    ) 
    select  o.FST_ORG_NAME,
           o.SEC_ORG_NAME,
           o.THD_ORG_NAME,
           o.FTH_ORG_NAME,
           o.ind_no,
           s.br_org_no, 
           t.BR_ORG_NAME, 
           t.SD_ORG_NAME, 
           t.RW_DATE, 
           t.CUST_NO, 
           t.CUST_NAME, 
           t.ZD_NUM, 
           t.STATUS,   
           t.SETT_ACCT, 
           t.DR_DATE, 
           AVG_BAL,
           case when s.br_org_no is not null then '正常'
             else '异常' end sts,
    t.xuhao,
    t.shul ,
           s.end_acct_bal,
            avg_bal/t.shul avg1,
           s.end_acct_bal/t.shul avg2
    
      from ( 
            SELECT   t.BR_ORG_NAME, 
                    t.SD_ORG_NAME,
                    t.RW_DATE, 
                    t.CUST_NO, 
                    t.CUST_NAME, 
                    t.ZD_NUM,  
                    t.STATUS,    
                    t.agret SETT_ACCT, 
                    t.DR_DATE, 
    t.xuhao,
    t.shul ,
                    SUM(ACCT_BAL * DAY_CNT) / max(DAY_COUNT) AVG_BAL,
                    sum(end_bal) as end_bal 
              FROM
               (SELECT  t.BR_ORG_NAME, 
                            t.SD_ORG_NAME, 
                            t.RW_DATE, 
                            t.CUST_NO, 
                            t.CUST_NAME,
                            t.ZD_NUM,   
                            t.STATUS,     
                            t.SETT_ACCT, 
                            t.DR_DATE, 
    t.xuhao,
    t.shul ,                     
    t.agret, 
                            XX.AGMT_ID,
                            XX.START_DT,
                            XX.END_DT,
                            XX.ACCT_BAL,
                            case
                              when XX.END_DT > to_date('2014-03-31', 'YYYY-MM-DD') then
                               XX.ACCT_BAL
                              else
                               0
                            end end_bal, 
                            CASE
                              when to_date('2014-01-01', 'YYYY-MM-DD') =
                                   to_date('2014-03-31', 'YYYY-MM-DD') then 1
                              when XX.START_DT < to_date('2014-01-01', 'YYYY-MM-DD') AND
                                   XX.END_DT > to_date('2014-03-31', 'YYYY-MM-DD') THEN
                               to_date('2014-03-31', 'YYYY-MM-DD') -
                               to_date('2014-01-01', 'YYYY-MM-DD') + 1
                              WHEN XX.START_DT >= to_date('2014-01-01', 'YYYY-MM-DD') AND
                                   XX.END_DT <= to_date('2014-03-31', 'YYYY-MM-DD') THEN
                               XX.END_DT - XX.START_DT
                              WHEN XX.START_DT < to_date('2014-01-01', 'YYYY-MM-DD') THEN
                               XX.END_DT - to_date('2014-01-01', 'YYYY-MM-DD')
                              WHEN XX.END_DT > to_date('2014-03-31', 'YYYY-MM-DD') THEN
                               to_date('2014-03-31', 'YYYY-MM-DD') - XX.START_DT + 1
                              ELSE
                               0
                            END AS DAY_CNT,
                            to_date('2014-03-31', 'YYYY-MM-DD') -
                            to_date('2014-01-01', 'YYYY-MM-DD') + 1 AS DAY_COUNT
                       FROM  zz t
                       left join
                     DWF.F_AGT_SAVB_ACCTINFO_H XX
                         on t.SETT_ACCT = xx.agmt_id
                        AND (
                             (XX.START_DT >= to_date('2014-01-01', 'YYYY-MM-DD') AND
                             XX.START_DT <= to_date('2014-03-31', 'YYYY-MM-DD'))
                             or (XX.START_DT < to_date('2014-01-01', 'YYYY-MM-DD') AND
                             XX.END_DT > to_date('2014-03-31', 'YYYY-MM-DD'))
                             OR (XX.END_DT > to_date('2014-01-01', 'YYYY-MM-DD') AND
                                 XX.END_DT <= to_date('2014-03-31', 'YYYY-MM-DD')))
                        and XX.CUR_CD = 'T00CNY'
                      WHERE t.DR_DATE =
                            (select max(a.dr_date) from m_pos_cust_sett a)) t             
             GROUP BY  t.BR_ORG_NAME,
                       t.SD_ORG_NAME,
                       t.RW_DATE,
                       t.CUST_NO,
                       t.CUST_NAME,
                       t.ZD_NUM,
                       t.STATUS,
                       t.xuhao,
                       t.shul ,
                       t.agret,
                       t.DR_DATE) t
      left join
     (
      SELECT  
       t.agret  AGMT_ID, max(xx.acct_org) as br_org_no, sum(xx.acct_bal) end_acct_bal
    ,t.xuhao
        FROM   zz t
        left join
      DWF.F_AGT_SAVB_ACCTINFO_H XX
          on t.sett_acct = xx.agmt_id
       WHERE XX.CUR_CD = 'T00CNY'
         and t.dr_date = (select max(a.dr_date) from m_pos_cust_sett a)
         AND XX.START_DT <= to_date('2014-03-31', 'YYYY-MM-DD')
         AND XX.End_Dt > to_date('2014-03-31', 'YYYY-MM-DD')
       group by  t.agret ,t.xuhao
    ) s
        on t.sett_acct = s.AGMT_ID
    and t.xuhao = s.xuhao
      left join V_M_ORG_LEVEL o
        on s.br_org_no = o.org_id
     where  (s.br_org_no is null or s.br_org_no in (SELECT bb.org_id
                             FROM b_m_sys_branch bb
                            WHERE bb.status = '1'
                              AND bb.dept_flag NOT IN ('2')
                           CONNECT BY PRIOR bb.id = bb.parent_id
                            START WITH bb.org_id = 10000)
                )
                ;
                
                
                select * from table(dbms_xplan.display());
    
    
    SQL> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
    
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SQL_ID	0pszsnw1v97nm, child number 1
    -------------------------------------
    with zz as (select t.br_org_name,
    t.sd_org_name,					t.rw_date,
    		    t.cust_no,
    t.cust_name,				      t.zd_num,
    		 t.status,
    t.sett_acct,				      t.dr_date,
    		  t.xuhao,				    t.shul ,
    			      t.sett_acct as agret
          from M_POS_CUST_SETT t			       where
    t.sett_acct not like '621028%'				union all
    		   select    t.br_org_name,
        t.sd_org_name,				   t.rw_date,
    		      t.cust_no,
    t.cust_name,				     t.zd_num,
    	       t.status,
    
    Plan hash value: 4217052783
    
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation				    | Name			  | Starts | E-Rows | A-Rows |	 A-Time   | Buffers | Reads  | Writes |  OMem |  1Mem | Used-Mem |
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT			    |				  |	 1 |	    |	5074 |00:00:17.11 |    1577K|	 575K|	  105 |       |       | 	 |
    |   1 |  TEMP TABLE TRANSFORMATION		    |				  |	 1 |	    |	5074 |00:00:17.11 |    1577K|	 575K|	  105 |       |       | 	 |
    |   2 |   LOAD AS SELECT			    |				  |	 1 |	    |	   0 |00:00:04.60 |	353K|  15242 |	  105 |   530K|   530K|  530K (0)|
    |   3 |    UNION-ALL				    |				  |	 1 |	    |	5400 |00:00:04.59 |	353K|  15242 |	    0 |       |       | 	 |
    |*  4 |     TABLE ACCESS FULL			    | M_POS_CUST_SETT		  |	 1 |   2797 |	2781 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |   5 |     VIEW				    |				  |	 1 |  38905 |	2619 |00:00:04.58 |	353K|  15242 |	    0 |       |       | 	 |
    |   6 |      NESTED LOOPS OUTER 		    |				  |	 1 |  38905 |	2619 |00:00:04.58 |	353K|  15242 |	    0 |       |       | 	 |
    |   7 |       VIEW				    |				  |	 1 |  12736 |	2619 |00:00:03.14 |   91703 |  15242 |	    0 |       |       | 	 |
    |*  8 |        HASH JOIN OUTER			    |				  |	 1 |  12736 |	2619 |00:00:03.13 |   91703 |  15242 |	    0 |  1073K|  1073K| 1396K (0)|
    |   9 | 	VIEW				    |				  |	 1 |   2312 |	2293 |00:00:02.55 |   76457 |	   0 |	    0 |       |       | 	 |
    |* 10 | 	 HASH JOIN RIGHT OUTER		    |				  |	 1 |   2312 |	2293 |00:00:02.55 |   76457 |	   0 |	    0 |    37M|  4938K|   38M (0)|
    |* 11 | 	  INDEX RANGE SCAN		    | F_AGT_CADB_BOOK_H_IDX4	  |	 1 |	  2 |	 333K|00:00:02.21 |   76366 |	   0 |	    0 |       |       | 	 |
    |* 12 | 	  TABLE ACCESS FULL		    | M_POS_CUST_SETT		  |	 1 |   2312 |	2293 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |* 13 | 	TABLE ACCESS FULL		    | F_AGT_CADB_ACCT		  |	 1 |	827K|	 605K|00:00:00.28 |   15246 |  15242 |	    0 |       |       | 	 |
    |* 14 |       TABLE ACCESS BY INDEX ROWID	    | F_AGT_SAVB_ACCTINFO_H	  |   2619 |	  3 |	2460 |00:00:01.44 |	261K|	   0 |	    0 |       |       | 	 |
    |* 15 |        INDEX RANGE SCAN 		    | F_AGT_SAVB_ACCTINFO_H_IDX2  |   2619 |	  1 |	 253K|00:00:00.16 |    8106 |	   0 |	    0 |       |       | 	 |
    |* 16 |   FILTER				    |				  |	 1 |	    |	5074 |00:00:12.50 |    1223K|	 560K|	    0 |       |       | 	 |
    |  17 |    NESTED LOOPS OUTER			    |				  |	 1 |	  1 |	5074 |00:00:12.44 |    1222K|	 560K|	    0 |       |       | 	 |
    |* 18 |     HASH JOIN OUTER			    |				  |	 1 |	  1 |	5074 |00:00:12.31 |    1217K|	 560K|	    0 |  1538K|  1070K| 1437K (0)|
    |  19 |      VIEW				    |				  |	 1 |	  1 |	5074 |00:00:04.16 |	657K|	 105 |	    0 |       |       | 	 |
    |  20 |       HASH GROUP BY			    |				  |	 1 |	  1 |	5074 |00:00:04.15 |	657K|	 105 |	    0 |    24M|  4065K| 1492K (0)|
    |  21 |        NESTED LOOPS OUTER		    |				  |	 1 |	250K|  94941 |00:00:03.86 |	657K|	 105 |	    0 |       |       | 	 |
    |* 22 | 	VIEW				    |				  |	 1 |  41702 |	5400 |00:00:00.03 |	200 |	 105 |	    0 |       |       | 	 |
    |  23 | 	 TABLE ACCESS FULL		    | SYS_TEMP_0FD9D6F46_6CB3C16D |	 1 |  41702 |	5400 |00:00:00.02 |	109 |	 105 |	    0 |       |       | 	 |
    |  24 | 	 SORT AGGREGATE 		    |				  |	 1 |	  1 |	   1 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |  25 | 	  TABLE ACCESS FULL		    | M_POS_CUST_SETT		  |	 1 |   5109 |	5074 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |  26 | 	VIEW				    |				  |   5400 |	  6 |  94736 |00:00:03.80 |	656K|	   0 |	    0 |       |       | 	 |
    |* 27 | 	 TABLE ACCESS BY INDEX ROWID	    | F_AGT_SAVB_ACCTINFO_H	  |   5400 |	  6 |  94736 |00:00:03.76 |	656K|	   0 |	    0 |       |       | 	 |
    |* 28 | 	  INDEX RANGE SCAN		    | SYS_C0054556		  |   5400 |	 19 |	 637K|00:00:00.41 |   18975 |	   0 |	    0 |       |       | 	 |
    |  29 |      VIEW				    |				  |	 1 |	  1 |	4872 |00:00:08.13 |	560K|	 560K|	    0 |       |       | 	 |
    |  30 |       HASH GROUP BY			    |				  |	 1 |	  1 |	4872 |00:00:08.13 |	560K|	 560K|	    0 |  1259K|  1259K| 6786K (0)|
    |* 31 |        HASH JOIN			    |				  |	 1 |	126K|	5195 |00:00:08.11 |	560K|	 560K|	    0 |  1291K|  1291K| 2793K (0)|
    |* 32 | 	VIEW				    |				  |	 1 |  41702 |	5400 |00:00:00.01 |	197 |	   0 |	    0 |       |       | 	 |
    |  33 | 	 TABLE ACCESS FULL		    | SYS_TEMP_0FD9D6F46_6CB3C16D |	 1 |  41702 |	5400 |00:00:00.01 |	106 |	   0 |	    0 |       |       | 	 |
    |  34 | 	 SORT AGGREGATE 		    |				  |	 1 |	  1 |	   1 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |  35 | 	  TABLE ACCESS FULL		    | M_POS_CUST_SETT		  |	 1 |   5109 |	5074 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |* 36 | 	TABLE ACCESS FULL		    | F_AGT_SAVB_ACCTINFO_H	  |	 1 |   2301K|	1287K|00:00:07.44 |	560K|	 560K|	    0 |       |       | 	 |
    |  37 |     VIEW PUSHED PREDICATE		    | V_M_ORG_LEVEL		  |   5074 |	  1 |	4872 |00:00:00.12 |    5085 |	   0 |	    0 |       |       | 	 |
    |  38 |      NESTED LOOPS OUTER 		    |				  |   5074 |	  1 |	4872 |00:00:00.11 |    5085 |	   0 |	    0 |       |       | 	 |
    |  39 |       NESTED LOOPS OUTER		    |				  |   5074 |	  1 |	4872 |00:00:00.09 |    4440 |	   0 |	    0 |       |       | 	 |
    |  40 |        NESTED LOOPS OUTER		    |				  |   5074 |	  1 |	4872 |00:00:00.06 |    3462 |	   0 |	    0 |       |       | 	 |
    |* 41 | 	TABLE ACCESS BY INDEX ROWID	    | B_M_SYS_BRANCH		  |   5074 |	  1 |	4872 |00:00:00.04 |    2270 |	   0 |	    0 |       |       | 	 |
    |* 42 | 	 INDEX RANGE SCAN		    | IND_BRANCH_001		  |   5074 |	  1 |	4872 |00:00:00.02 |	652 |	   0 |	    0 |       |       | 	 |
    |  43 | 	TABLE ACCESS BY INDEX ROWID	    | B_M_SYS_BRANCH		  |   4872 |	  1 |	4872 |00:00:00.02 |    1192 |	   0 |	    0 |       |       | 	 |
    |* 44 | 	 INDEX RANGE SCAN		    | IND_BRANCH_002		  |   4872 |	  1 |	4872 |00:00:00.01 |	652 |	   0 |	    0 |       |       | 	 |
    |  45 |        TABLE ACCESS BY INDEX ROWID	    | B_M_SYS_BRANCH		  |   4872 |	  1 |	4872 |00:00:00.02 |	978 |	   0 |	    0 |       |       | 	 |
    |* 46 | 	INDEX RANGE SCAN		    | IND_BRANCH_002		  |   4872 |	  1 |	4872 |00:00:00.01 |	652 |	   0 |	    0 |       |       | 	 |
    |  47 |       TABLE ACCESS BY INDEX ROWID	    | B_M_SYS_BRANCH		  |   4872 |	  1 |	 594 |00:00:00.01 |	645 |	   0 |	    0 |       |       | 	 |
    |* 48 |        INDEX RANGE SCAN 		    | IND_BRANCH_002		  |   4872 |	  1 |	 594 |00:00:00.01 |	377 |	   0 |	    0 |       |       | 	 |
    |* 49 |    FILTER				    |				  |    143 |	    |	 143 |00:00:00.05 |	858 |	   0 |	    0 |       |       | 	 |
    |* 50 |     CONNECT BY NO FILTERING WITH SW (UNIQUE)|				  |    143 |	    |	7094 |00:00:00.05 |	858 |	   0 |	    0 |       |       | 	 |
    |  51 |      TABLE ACCESS FULL			    | B_M_SYS_BRANCH		  |    143 |	152 |  21879 |00:00:00.01 |	858 |	   0 |	    0 |       |       | 	 |
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - filter("T"."SETT_ACCT" NOT LIKE '621028%')
       8 - access("A"."MASTER_CARD_NO"="EE"."AGMT_ID")
      10 - access("T"."SETT_ACCT"="A"."AGMT_ID")
      11 - access("A"."AGMT_ID" LIKE '621028%' AND "A"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00',
    	      'syyyy-mm-dd hh24:mi:ss'))
           filter(("A"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."AGMT_ID" LIKE '621028%' AND "A"."MASTER_CARD_NO" IS NOT NULL AND
    	      "A"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')))
      12 - filter("T"."SETT_ACCT" LIKE '621028%')
      13 - filter(("EE"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "EE"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')))
      14 - filter(("B"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "B"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')))
      15 - access("EE"."ACCT_NO"="B"."AGMT_ID" AND "EE"."ACCT_SEQNO"="B"."ACCT_SEQNO")
      16 - filter(("S"."BR_ORG_NO" IS NULL OR  IS NOT NULL))
      18 - access("T"."XUHAO"="S"."XUHAO" AND "T"."SETT_ACCT"="S"."AGMT_ID")
      22 - filter("T"."DR_DATE"=)
      27 - filter(((("XX"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "XX"."START_DT"<TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
    	      OR ("XX"."START_DT">=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "XX"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) OR
    	      ("XX"."END_DT">TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "XX"."END_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))) AND
    	      "XX"."CUR_CD"='T00CNY'))
      28 - access("T"."SETT_ACCT"="XX"."AGMT_ID")
      31 - access("T"."SETT_ACCT"="XX"."AGMT_ID")
      32 - filter("T"."DR_DATE"=)
      36 - filter(("XX"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "XX"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
    	      "XX"."CUR_CD"='T00CNY'))
      41 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
      42 - access("A"."ORG_ID"="S"."BR_ORG_NO")
      44 - access("A"."PARENT_ID"="B"."ID")
      46 - access("B"."PARENT_ID"="C"."ID")
      48 - access("C"."PARENT_ID"="D"."ID")
      49 - filter(("BB"."ORG_ID"=:B1 AND "BB"."STATUS"=1 AND "BB"."DEPT_FLAG"<>'2'))
      50 - access("BB"."PARENT_ID"=PRIOR NULL)
           filter(TO_NUMBER("BB"."ORG_ID")=10000)
    
    
    112 rows selected.
    
    | 22 | 	 TABLE ACCESS FULL		    | SYS_TEMP_0FD9D6F41_6CB3C16D |	 1 |  41702 |	5400 |00:00:00.03 |	109 |	 105 |	    0 |       |       | 	 |
    |  23 | 	 SORT AGGREGATE 		    |				  |	 1 |	  1 |	   1 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    |  24 | 	  TABLE ACCESS FULL		    | M_POS_CUST_SETT		  |	 1 |   5109 |	5074 |00:00:00.01 |	 91 |	   0 |	    0 |       |       | 	 |
    
    这里的5400行是怎么计算的呢?
    with A as  (select /*+ materialize */ * from (select  t.br_org_name,                                                           
                                     t.sd_org_name,                                        
                                     t.rw_date,                                            
                                     t.cust_no,                                            
                                     t.cust_name,                                          
                                     t.zd_num,                                             
                                     t.status,                                             
                                     t.sett_acct,                                          
                                     t.dr_date,   
    t.xuhao,
    t.shul ,                                         
                                     t.sett_acct as agret                                  
                               from M_POS_CUST_SETT t                                      
                              where t.sett_acct not like '621028%'                         
                             union all                                                     
                             select /*+ use_hash(EE B)   */   t.br_org_name,                                         
                                    t.sd_org_name,                                         
                                    t.rw_date,                                             
                                    t.cust_no,                                             
                                    t.cust_name,                                           
                                    t.zd_num,                                              
                                    t.status,                                              
                                    B.AGMT_ID     sett_acct,                               
                                    t.dr_date,     
    t.xuhao,
    t.shul ,                                        
                                    t.sett_acct   as agret                                 
                               from M_POS_CUST_SETT t                                      
                               left join DWF.F_AGT_CADB_BOOK_H A                           
                                 on t.sett_acct = a.agmt_id                                
                                and A.START_DT <= TO_DATE('2014-03-31', 'YYYY-MM-DD') 
                                AND A.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')    
                                AND A.MASTER_CARD_NO IS NOT NULL                           
                               -- AND SUBSTR(A.CARD_NEW_STATUS, 8, 1) <> '6'                 
                               LEFT JOIN DWF.F_AGT_CADB_ACCT ee                            
                                 on ee.START_DT <=                                         
                                    TO_DATE('2014-03-31', 'YYYY-MM-DD')               
                                AND ee.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')   
                                and A.MASTER_CARD_NO = EE.AGMT_ID                          
                               LEFT JOIN DWF.F_AGT_SAVB_ACCTINFO_H b                       
                                 on b.START_DT <= TO_DATE('2014-03-31', 'YYYY-MM-DD') 
                                AND b.END_DT > TO_DATE('2014-03-31', 'YYYY-MM-DD')    
                                and EE.ACCT_NO = B.AGMT_ID                                 
                                AND EE.ACCT_SEQNO = B.ACCT_SEQNO                           
                              where t.sett_acct like '621028%' ))
    
    select count(*) from A 
                              where  A.DR_DATE =
                            (select max(a.dr_date) from m_pos_cust_sett a)
                            
    --5400

  • 相关阅读:
    贝叶斯模型
    java的移位和异或运算
    windows下xgboost安装到python
    bagging and boosting
    SVM处理多分类问题
    GO语言语法入门
    [转自SA]浅谈nginx的工作原理和使用
    多线程编程-- part 9 信号量:Semaphore
    多线程编程-- part 8 CyclicBarrier
    多线程编程-- part 7 CountDownLatch
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352167.html
Copyright © 2011-2022 走看看