试一下
select A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
        A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR, 
    MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,1),B.VAL)) KPI, 
    MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,2),B.VAL)) GR_ML, 
    MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,3),B.VAL)) ML
from PERSON_INFO_JEELONXU A,XC_DEL B
WHERE A.calc_obj_type(+)=B.calc_obj_type
GROUP BY A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
        A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR

解决方案 »

  1.   

    增加了一个查询关联条件,减少一点数据量
    select A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
            A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,1),B.VAL)) KPI, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,2),B.VAL)) GR_ML, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,3),B.VAL)) ML
    from PERSON_INFO_JEELONXU A,XC_DEL B
    WHERE A.calc_obj_type(+)=B.calc_obj_type
    and instr(','||A.DIVISOR||',',','||B.RULE_ID||',')>0
    GROUP BY A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
            A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR
      

  2.   


    我要查询所有PERSON_INFO_JEELONXU  无论是否满足对应条件,改右连接就可以了吧 
      

  3.   

    用左连接
    select A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
            A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,1),B.VAL)) KPI, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,2),B.VAL)) GR_ML, 
        MAX(DECODE(B.RULE_ID,REGEXP_SUBSTR(A.DIVISOR,'[^,]+',1,3),B.VAL)) ML
    from PERSON_INFO_JEELONXU A left join XC_DEL B
    on A.calc_obj_type=B.calc_obj_type
    and instr(','||A.DIVISOR||',',','||B.RULE_ID||',')>0
    GROUP BY A.MONTH_ID, A.CALC_OBJ_NO, A.ORG_NAME, A.CALC_OBJ_TYPE, 
            A.CALC_OBJ_TYPE_DESC, A.CALC_OBJ_NAME, A.DIVISOR