本帖最后由 wind315 于 2012-09-20 10:14:31 编辑

解决方案 »

  1.   

    为了节省你的时间,我已将aa表和bb表建好,可以直接在这段代码后面给出如何查询,谢谢WITH aa AS(
    SELECT '1' ID, 'a' CLS, 456 VAL FROM dual
    UNION ALL
    SELECT '2' , 'a' , 768 FROM dual
    union all
    SELECT '3' , 'c' , 657 FROM dual
    ),
    bb AS(
    SELECT '1' ID, 'b' CLS, 78 VAL FROM dual
    UNION ALL
    SELECT '2' , 'a' , 67 FROM dual
    union all
    SELECT '1' , 'a' , 600 FROM dual
    union all
    SELECT '4' , 'b' , 400 FROM dual
    )
      

  2.   

    (select aa.id, aa.cls, aa.val as val_aa, bb.val as val_bb
    from aa left join bb on aa.id=bb.id and aa.cls=bb.cls)
    union
    (select bb.id, bb.cls, aa.val as val_aa, bb.val as val_bb
    from bb left join aa on aa.id=bb.id and aa.cls=bb.cls)
      

  3.   


    WITH aa AS(
    SELECT '1' ID, 'a' CLS, 456 VAL FROM dual
    UNION ALL
    SELECT '2' , 'a' , 768 FROM dual
    union all
    SELECT '3' , 'c' , 657 FROM dual
    ),
    bb AS(
    SELECT '1' ID, 'b' CLS, 78 VAL FROM dual
    UNION ALL
    SELECT '2' , 'a' , 67 FROM dual
    union all
    SELECT '1' , 'a' , 600 FROM dual
    union all
    SELECT '4' , 'b' , 400 FROM dual
    )
    select nvl(aa.id,bb.id) id,nvl(aa.cls,bb.cls) cls,aa.val,bb.val from aa full join bb on aa.id=bb.id and aa.cls=bb.cls
    order by id,cls
      

  4.   

    rownum  id      cls     val_aa  val_bb
    1 1 a 456 600
    2 1 b 78
    3 2 a 768 67
    4 3 c 657
    5 4 b 400
      

  5.   

    为什么我用你这个代码时会出ORA-03113错误?试了很多次,检查了输入没有错误。难道是版本问题?我用9i
      

  6.   

    这个应该跟版本没关系的吧,你是客户端还是服务端?你直接查询AA或BB会报错么?我这里执行没有问题,语法也没有问题
      

  7.   

    select nvl(aa.id,bb.id) id,nvl(aa.cls,bb.cls),aa.val,bb.val from aa 
    full join bb on aa.id = bb.id and aa.cls = bb.cls
    order by id
      

  8.   

    直接查询没有问题,也不会报错,不知道为什么改成那个代码就出错,我用的是”PL/SQL Developer"难道是跟这个有关?