SELECT cpay2.demandno, 
       COUNT(DISTINCT cpay2.ACCD_1) ACCD_1, 
       MAX(cpay2.ACCD_3) ACCD_3, 
       COUNT(DISTINCT cpay2.K_B) ACCD_KIND_B, 
       COUNT(DISTINCT cpay2.K_A) ACCD_KIND_A, 
       COUNT(DISTINCT cpay2.K_Z) ACCD_KIND_Z, 
       COUNT(DISTINCT cpay2.T1) ACCD_1_T1, 
       COUNT(DISTINCT cpay2.T2) ACCD_1_T2, 
       COUNT(DISTINCT cpay2.T3) ACCD_1_T3, 
       COUNT(DISTINCT cpay2.T4) ACCD_1_T4, 
       COUNT(DISTINCT cpay2.T5) ACCD_1_T5, 
       COUNT(DISTINCT cpay2.T9) ACCD_1_T9 
  FROM (SELECT cpay1.demandno, 
               cpay1.losstime ACCD_1, 
               (SELECT COUNT(DISTINCT t.losstime) 
                  FROM ods_ciinsuredemandpay t, 
                       ods_ciinsuredemandduplicated f 
                 WHERE t.demandno = f.demandno 
                   AND TO_DATE(t.losstime, 'YYYY-MM-DD hh24:mi') BETWEEN ADD_MONTHS(f.startdate, -36) AND f.enddate 
                   AND t.demandno = cpay1.demandno 
                   AND t.lossfee > 0 + UID * 0 
                 GROUP BY t.demandno) ACCD_3, 
               DECODE(cpay1.kindcode, '2', cpay1.losstime) K_B, 
               DECODE(cpay1.kindcode, '3', cpay1.losstime) K_A, 
               DECODE(cpay1.kindcode, '9', cpay1.losstime) K_Z, 
               DECODE(cpay1.paytype, '1', cpay1.losstime) T1, 
               DECODE(cpay1.paytype, '2', cpay1.losstime) T2, 
               DECODE(cpay1.paytype, '3', cpay1.losstime) T3, 
               DECODE(cpay1.paytype, '4', cpay1.losstime) T4, 
               DECODE(cpay1.paytype, '5', cpay1.losstime) T5, 
               DECODE(cpay1.paytype, '9', cpay1.losstime) T9 
          FROM ods_ciinsuredemandpay cpay1, 
               (SELECT DISTINCT t.demandno, 
                       t.startdate, 
                       t.enddate 
                  FROM ods_ciinsuredemandduplicated t) cdmd1 
         WHERE cpay1.lossfee > 0 + UID * 0
           AND cpay1.demandno = cdmd1.demandno 
           AND TO_DATE(cpay1.losstime, 'YYYY-MM-DD hh24:mi') BETWEEN cdmd1.startdate AND cdmd1.enddate ) cpay2 
 GROUP BY cpay2.demandno

解决方案 »

  1.   

    UID 是系统保留字,表示的是整个数据库的id
    每个表都可以
    select uid from 表
    对于同一个数据库,取出的uid值都是一样的但是这个数*0再加0 貌似和0没啥区别
      

  2.   

    是用户的id,每个用户中的表取出的uid都是一样的,修正下
      

  3.   

    加了这 + UID * 0之后速度是快了点 想知道是什么原理。
      

  4.   

    楼主知道为什么了吗?我也想知道原因,我用toad进行分析后,最快的那个也加了uid*0,但是就是不知道为什么