首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
Oracle开发
» 两表连接的问题,请求帮助
‹‹ 上一主题
|
下一主题 ››
15
2/2
‹‹
1
2
投票
交易
悬赏
活动
评价
|
打印
|
推荐
|
订阅
|
收藏
标题: 两表连接的问题,请求帮助
DragonBill
武陵愚生
精华贴数 1
个人空间
10
技术积分 3260 (443)
社区积分 391 (1582)
注册日期 2006-12-18
论坛徽章:13
#11
使用道具
发表于 2008-6-25 18:12
WITH a AS(
SELECT 'a1' col1,'AA' col2 FROM dual
UNION ALL
SELECT 'a1' col1,'BB' col2 FROM dual
UNION ALL
SELECT 'b1' col1,'AA' col2 FROM dual
UNION ALL
SELECT 'b1' col1,'BB' col2 FROM dual
UNION ALL
SELECT 'c1' col1,'BB' col2 FROM dual
UNION ALL
SELECT 'c1' col1,'AA' col2 FROM dual
UNION ALL
SELECT 'c1' col1,'BB' col2 FROM dual
),
b AS(
SELECT 'a1' col1,'AAA' col2 FROM dual
UNION ALL
SELECT 'a1' col1,'BBB' col2 FROM dual
UNION ALL
SELECT 'b1' col1,'AAA' col2 FROM dual
UNION ALL
SELECT 'b1' col1,'BBB' col2 FROM dual
UNION ALL
SELECT 'c1' col1,'BBB' col2 FROM dual
)
SELECT col1, col2, col3
FROM
(
SELECT a.col1, a.col2, b.col2 col3,
row_number() over(PARTITION BY a.col1 ORDER BY NULL) rn,
COUNT(*) over(PARTITION BY a.col1) ct
FROM a, b where a.col1 = b.col1
)
WHERE rn = ct;
只看该作者
zhangweicai74
阿财
来自 贵州
精华贴数 3
个人空间
240
技术积分 5311 (242)
社区积分 20328 (66)
注册日期 2007-12-13
论坛徽章:135
#12
使用道具
发表于 2008-6-25 18:13
QUOTE:
原帖由
米弗
于 2008-6-25 17:02 发表
我没写语句,正常应该是编程用两个游标来做。
我是想有没有简单的方法可以用SQL命令就搞定的。
要求是A表的每一条记录在B表上也有一条记录对应。
我想用A表与B表连接后,用连接出来的记录数去比原A表的记录数,如果记录数一致,那就证明A表与B表的记录是一一对应的。
这个问题主要就是A表有重复记录,所以B表上也有重复记录,一连接就成N*N了,无法判断A表上的记录与B表记录是否刚好一一对应。
不知你有没有按我的方法测试过?
ROW_NUMBER() OVER()后,与A表对应T1及与B表对应的T2如下:
表T1
ca1 ca2
rn1
-----------
a1 AA
1
a1 BB
2
表T2
cb1 cb2
rn2
-----------
a1 AAA
1
a1 BBB
2
你再按你的想法连接不行吗?
我的上面语句的结果应是:
a1 AA AAA
a1 BB BBB
如果将其中的一个ORDER BY ...DESC
则结果是:
a1 BB AAA
a1 BB BBB
[
本帖最后由 zhangweicai74 于 2008-6-26 10:14 编辑
]
__________________
NEVER TOO LATE
想吃贵州家乡菜不?进来嘛,老乡!!
http://space.itpub.net/12391917/viewspace-257185
玩玩双节棍(l_l)
想
美丽家乡黄果树瀑布
http://space.itpub.net/12391917/viewspace-244134
只看该作者
阿日
2M-Never give up
精华贴数 0
个人空间
486
技术积分 1361 (1233)
社区积分 720 (1113)
注册日期 2004-1-4
论坛徽章:18
#13
使用道具
发表于 2008-6-26 08:18
按阿财的试试,应该没有问题吧
__________________
我欲将心向明月,奈何明月照沟渠.
阳光灿烂的日子,提高自身素质,努力向前 --自强不息 Don't give up!
相信-坚持-一定成功-多问-多看-多总结-多分析-加油
过去的都过去了,大不了从头再来,别回头,向前看!
http://blog.csdn.net/zxf_feng
只看该作者
visual2006
精华贴数 0
个人空间
0
技术积分 768 (2435)
社区积分 4 (18235)
注册日期 2006-7-23
论坛徽章:1
#14
使用道具
发表于 2008-6-26 08:23
啊日真早!
只看该作者
米弗
精华贴数 0
个人空间
0
技术积分 60 (24142)
社区积分 0 (1676122)
注册日期 2008-1-10
论坛徽章:1
#15
使用道具
发表于 2008-6-26 14:59
QUOTE:
原帖由
zhangweicai74
于 2008-6-25 16:44 发表
是不是这个意思?
with t1 as (select a.*,row_number() over(partition by ca1 order by ca2) rn1 from a),
t2 as (select b.*,row_number() over(partition by cb1 order by cb2) rn2 from b)
select t1.ca1,t1.ca2,t2.cb2 from t1,t2 where t1.ca1=t2.cb1 and t1.rn1=t2.rn2
猜的呵,楼主看下是不是你想要的,语句没测试过.
昨天晚饭的时候在电脑前看了半天你的回贴,忽然就想明白了
刚才才空闲下来,到机器上试了一试,果然。
在sqlplus命令行执行的是以下:
(不同是我找的表是找不同,所以加了最后一行的where语句)
with t1 as (select accnum,itemnu,invnam,invdat,invamt,
row_number() over(partition by invnam,invdat,invamt order by invnam,invdat,invamt) rn
from gsasklist where accnum='0000060809001 '),
t2 as (select regnoo,itemnu,invnam,invdat,invamt,
row_number() over(partition by invnam,invdat,invamt order by invnam,invdat,invamt) rn
from gslist where regnoo='0000060809001 ')
select t1.itemnu from t1 full join t2 on t1.accnum=t2.regnoo and t1.invnam=t2.invnam
and t1.invdat=t2.invdat and t1.invamt=t2.invamt and t1.rn=t2.rn
where t1.itemnu is null or t2.itemnu is null;
这个 over(partition by ... order by ...) 与 分析函数的组合果然是奇妙
谢谢楼上给予帮助的各位兄弟
只看该作者
15
2/2
‹‹
1
2
投票
交易
悬赏
活动
相关内容
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Application Server套件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> EBS相关文档
> PeopleSoft与JDE
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET【已迁移到微软开发技术论坛】
> .Net企业开发与应用【已迁移到微软开发技术论坛】
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
≡ 微软开发技术 ≡
> 开发工具和语言
> .NET Framework 相关
> Visual Basic/VB.net
> Visual C#
> Visual C++/vc.net
> Visual Studio
> .NET软件架构与模式
> .NET开发辅助工具及框架
> Web开发
> ASP.NET与AJAX
> Web相关技术讨论(IIS等)
> Silverlight 技术
> 微软企业级产品技术
> SQL Server
> windows server
> SharePoint
> Exchange Server
> Biztalk
> 嵌入式及移动开发
> Windows Embedded 嵌入式技术
> Windows 移动设备
> Office开发
> Microsoft office system
> Office Business Application
> 微软产品用户交流区
> .Net电子书籍&&书籍介绍
> .Net人才交流
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计