oracle的全连接的替换

ERP资深顾问 2008-04-10 10:59:13
处理后 tab1
企业(ep) 期间(date) 值(value)
1 2006 1
2 2006 2
3 2006 3

处理后 tab2
企业 期间 值
1 2007 1
4 2007 4
5 2007 5
6 2010 6

希望结果
企业 期间1 值1 期间2 值1
1 2006 1 2007 1
2 2006 2 2007 0
3 2006 3 2007 0
4 2006 0 2007 4
5 2006 0 2007 5


全连接的结果是所有信息都显示,左右连接又只满足一边,想知道怎么弄呢?

...全文
611 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjianshi 2009-02-05
  • 打赏
  • 举报
回复
今天试了一下,发现少了一次全表扫描,性能有所提高;
select decode(t1.useragent,null,t2.useragent,t1.useragent),t1.succ,t2.fail from test1 t1 full join test2 t2 on t1.useragent = t2.useragent
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
什么呀
pccastle 2008-04-27
  • 打赏
  • 举报
回复
jf
pccastle 2008-04-27
  • 打赏
  • 举报
回复
ding
abchappybear 2008-04-17
  • 打赏
  • 举报
回复
select erp,decode(dat,'','2006',dat),decode(val,'','0',val),decode(dat1,'','2007',dat1),decode(val1,'','0',val1) from
(select a.erp,a.dat,a.val,b.dat1,b.val1 from abc a left join bac b on a.erp=b.erp1
union
select b.erp1,a.dat,a.val,b.dat1,b.val1 from bac b left join abc a on b.erp1=a.erp where dat1 <> '2010') tabnum
zhu_gx 2008-04-16
  • 打赏
  • 举报
回复
帮顶
HelloWorld_001 2008-04-16
  • 打赏
  • 举报
回复
full join就可以了,2楼的很好
gracepop 2008-04-16
  • 打赏
  • 举报
回复
select j1.a a,'2006' b1,j1.c c1,'2007' b2,j2.c c2
from jyq_test001 j1,jyq_test002 j2
where j1.a=j2.a(+)
union
select j2.a a,'2006' b1,j1.c c1,'2007' b2,j2.c c2
from jyq_test001 j1,jyq_test002 j2
where j1.a(+)=j2.a
star_guan2008 2008-04-10
  • 打赏
  • 举报
回复
select * from tab1 full outer jion tab2
on tab1.ep = tab2.ep
HelloWorld_001 2008-04-10
  • 打赏
  • 举报
回复
select * from tab1,tab2
where tab1.ep = tab2.ep(+)
union
select * from tab1,tab2
where tab1.ep(+) = tab2.ep

只想到这样做

1,617

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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