续上次提出的菜问题后,再提一个菜问题,关于full join的

arthur_su 2005-10-28 11:09:55
现在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
谢谢路过大虾指点~
...全文
130 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hisnow_zh 2006-04-09
  • 打赏
  • 举报
回复
上例再引申一下:
为什么在ORACLE 9i的存储过程中,用FULL JOIN做连接会报错?有办法解决吗?
还有,
在 FULL JOIN 所连接的子查询内部,好象不能加 WHERE 条件啊,
哪儿位大侠知道怎么解决啊??
正在郁闷中。。。。
natumi 2005-10-28
  • 打赏
  • 举报
回复
学习
waterfirer 2005-10-28
  • 打赏
  • 举报
回复
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
waterfirer 2005-10-28
  • 打赏
  • 举报
回复
sorry,看错
waterfirer 2005-10-28
  • 打赏
  • 举报
回复
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
arthur_su 2005-10-28
  • 打赏
  • 举报
回复
我的做法是
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,这样写查询没问题,但是写到存储过程里面,会说有字段数据类型不一致,报这个错,我不知道是什么缘故?~路过大虾帮下,谢谢~

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧