使用外连接
select t1.RQ,t1.ZYDXBSM,t1.zymc,sum(t1.jbrksl),,nvl(sum(t4.a),0),nvl(sum(t4.f),0)
from xsuser.ckkcglmxz t1,
( select t3.jbxcsl a,t3.rq b ,t3.zydxbsm c,t3.zymc d,t3.jldw e,t3.jbxcsl*t3.jbcbdj f  
from xsuser.ckkcglmxz t3 )t4 
where  t1.rq-1(+)=t4.b and trim(t1.zydxbsm(+))=trim(t4.c) 
and trim(t1.zymc(+))=trim(t4.d) and trim(t1.jldw(+))=trim(t4.e) 
group by t1.rq,t1.ZYDXBSM,t1.zymc

解决方案 »

  1.   

    我这样写语句
    select t1.RQ,t1.ZYDXBSM,t1.zymc,sum(t1.jbrksl),nvl(sum(t4.a),0),nvl(sum(t4.f),0)
    from xsuser.ckkcglmxz t1,
    ( select t3.jbxcsl a,t3.rq b ,t3.zydxbsm c,t3.zymc d,t3.jldw e,t3.jbxcsl*t3.jbcbdj f  
    from xsuser.ckkcglmxz t3 )t4 
    where t1.rq(+)=t4.b+1 and trim(t1.zydxbsm(+))=trim(t4.c) 
    and trim(t1.zymc(+))=trim(t4.d) and trim(t1.jldw(+))=trim(t4.e)
    group by t1.rq,t1.ZYDXBSM,t1.zymc 还是查不出结果。
      

  2.   

    你把trim写在t1和t4的子查询里面,外边直接引用trim过的列
      

  3.   

    已经把trim写在子查询中了但还是子能查出一条空记录。
    select t1.RQ,t1.ZYDXBSM,t1.zymc,sum(t1.jbrksl),sum(t4.a),sum(t4.f)
    from (select t.rq ,trim(t.zydxbsm) zydxbsm,trim(t.zymc) zymc,t.jbrksl,trim(t.jldw) jldw from xsuser.ckkcglmxz t) t1,
    ( select t3.jbxcsl a,t3.rq b ,trim(t3.zydxbsm) c,trim(t3.zymc) d,trim(t3.jldw) e,t3.jbxcsl*t3.jbcbdj f  
    from xsuser.ckkcglmxz t3 )t4 
    where t1.rq(+)=t4.b+1 and t1.zydxbsm(+)=t4.c 
    and t1.zymc(+)=t4.d and t1.jldw(+)=t4.e
    group by t1.rq,t1.ZYDXBSM,t1.zymc
      

  4.   

    Sorry,果然是数据的问题,还有我应将where t1.rq(+)=t4.b+1 and t1.zydxbsm(+)=t4.c 
    and t1.zymc(+)=t4.d and t1.jldw(+)=t4.e 写成t4.b(+)=t1.rq-1 and t4.c(+)=t1.zydxbsm and t4.d(+)=t1.zymc and t4.e(+)=t1.jldw
    多谢了!