假设存在两个表A,B,它们有的字段相同,有的字段不同,如:
A.x1, A.x1, A.a1
B.x1, B.x2, B.b1现在我想把两个表合并起来成C,且C有字段
C.x1, C.x2, C.a1, C.b1要求如果A.x1=B.x1 且 A.x2=B.x2 则该条记录C.a1, C.b1由两表中的数据填充
如果不符合上述要求,则该条记录由其中一表的记录填充,没有的字段设为空

解决方案 »

  1.   

    select A.x1, A.x2, A.a1, B.b1
    from A FULL OUTER JOIN B on (A.x1 = B.x1 and A.x2 = B.x2)
      

  2.   

    要oracle9i或以上的才能用。不知道楼主的合不合适用。
      

  3.   

    --如果不符合条件A.x1=B.x1 且 A.x2=B.x2的,记录由A表补充
    select A.x1, A.x2, A.a1, B.b1 from A LEFT OUTER JOIN B on A.x1 = B.x1 and A.x2 = B.x2
      

  4.   

    select * from v$version
      

  5.   

    不是很理解意思,照我的意思是这样
    select A.x1, A.x2, A.a1, B.b1 
    from A,B 
    where A.X1=B.X1(+) and A.X2=B.X2(+)
      

  6.   

    此题完整解法是:
    create table sssyyybbb
    as 
    select a.X1,a.X2,a.A1,b.B1 from shu_aaa a left join  shu_bbb b  
           on a.X1 = b.X1 and a.X2 = b.X2 
    union  
    select b.X1,b.X2,a.A1,b.B1 from shu_aaa a right join  shu_bbb b  
           on a.X1 = b.X1 and a.X2 = b.X2