有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表中字段,如在两个表中有一个为空,选另一个表中不为空的值
请高手指点,先谢了。
表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表中字段,如在两个表中有一个为空,选另一个表中不为空的值
请高手指点,先谢了。
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.编号(+)
from a,b
where b.编号=a.编号(+)
union
select a.编号,a.姓名a.年龄a
from a where not exists (select 1 from b where b.编号=a.编号)