有2个表:
表a
         编号,姓名,     年龄
         2,    zhanggong, 20
         3,   w, 
         4,    dali,
         5,    lidong,    25   表b      编号,姓名,      年龄
         1,   wangli,   
         2,    zhanggong,30
         3,    xiaowu,   40
         5,   lidong,    
要得到的结果:
         编号,姓名,    年龄
         1,   wangli,    
         2,    zhanggong,30
         3,    xiaowu,   40
         4,    dali,
         5,    lidong,   25
想用1条sql语句建一个视图,其中,
1.编号字段在每个表中唯一
2.如编号字段在两个表中重复,姓名字段有可能不同,则选择b表中字段。
3.年龄字段在两个表中可能重复也可能为空,如编号重复,年龄不同选b表中字段,如在两个表中有一个为空,选另一个表中不为空的值
请高手指点,先谢了。

解决方案 »

  1.   

    select b.编号,b.姓名,decode(b.年龄,null,a.年龄,b.年龄) 年龄
    from a,b
    where b.编号=a.编号(+)
    union
    select a.编号,decode(b.姓名,null,a.姓名,b.姓名),decode(b.年龄,null,a.年龄,b.年龄) 年龄
    from a,b
    where a.编号=b.编号(+)
      

  2.   

    select b.编号,b.姓名,decode(b.年龄,null,a.年龄,b.年龄) 年龄
    from a,b
    where b.编号=a.编号(+)
    union
    select a.编号,a.姓名a.年龄a
    from a where not exists (select 1 from b where b.编号=a.编号)