try:select a.code,a.num1,nvl(b.num2,0) num2 from 
(select sum(num) num1,code from table where name='A' group by code) a,
(select sum(num) num2,code from table where name='B' group by code) b
where a.code=b.code(+);

解决方案 »

  1.   

    也不知道你要左连接、右连接还是全部,有没有name="A"的num1也为空的情况?
    select nvl(a.num1,0),a.code,nvl(b.num2,0),b.code  from 
    (select sum(num) num1,code from table where name='A' group by code) a,
    (select sum(num) num2,code from table where name='B' group by code) b
    where a.code=b.code;
      

  2.   

    有name="A"的num1也为空的情况!!
      

  3.   

    如果a和b都有空的情况,就应该考虑union了!
    select a.code,a.num1,nvl(b.num2,0) num2 from 
    (select sum(num) num1,code from table where name='A' group by code) a,
    (select sum(num) num2,code from table where name='B' group by code) b
    where a.code=b.code(+)
    union
    select b.code,nvl(a.num1,0),b.num2 from 
    (select sum(num) num1,code from table where name='A' group by code) a,
    (select sum(num) num2,code from table where name='B' group by code) b
    where a.code(+)=b.code
      

  4.   

    用Left Joinselect * from 
    (select sum(num) num1,code from table where name='A' group by code) a left join
    (select sum(num) num2,code from table where name='B' group by code) b on a.code=b.code