现在3个表
表a:
class  yyyy  numA
A      2005  10
B      2005  20
表b:
class  yyyy  numB
A      2005  30
C      2005  40
表c:
class  yyyy  numC
A      2005  50
B      2006  60
我需要的查询结果是
class  yyyy  numA  numB  numC
A      2005  10    30    50
B      2005  20
C      2005        40
B      2006              60    
谢谢路过大虾指点~

解决方案 »

  1.   

    我的做法是
    select nvl(t.yyyy, c.yyyy),
    nvl(t.class, c.class),
    t.numA,
    t.numB,
    c.numC
    from
    (select nvl(a.yyyy,b.yyyy) yyyy,
    nvl(a.class,b.class) class,
    a.numA,
    b.numB
    from a full join b on (a.yyyy=b.yyyy and a.class = b.class)) t full join c on (t.yyyy = c.yyyy and t.class = c.class)就是先把a表和b表full join。再把他们的查询结果和c表full join,这样写查询没问题,但是写到存储过程里面,会说有字段数据类型不一致,报这个错,我不知道是什么缘故?~路过大虾帮下,谢谢~
      

  2.   

    select class,yyyy,numA,null numB,null numC from A
    union all
    select class,yyyy,null numA,numB,null numC from A
    union all
    select class,yyyy,null numA,null numB,numC from A
      

  3.   

    select class,yyyy,sum(numA),sum(numB),sum(numC) from 
    (select class,yyyy,numA,null numB,null numC from A
    union all
    select class,yyyy,null numA,numB,null numC from B
    union all
    select class,yyyy,null numA,null numB,numC from C

    group by class,yyyy
      

  4.   

    上例再引申一下:
    为什么在ORACLE 9i的存储过程中,用FULL JOIN做连接会报错?有办法解决吗?
    还有,
    在 FULL JOIN 所连接的子查询内部,好象不能加 WHERE 条件啊,
    哪儿位大侠知道怎么解决啊??
    正在郁闷中。