ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 15676|回复: 23

大家来列举一下查找同一内表中重复记录的最优化的算法 [复制链接]

注册会员

後輩

精华贴数
0
技术积分
624
社区积分
0
注册时间
2005-10-7
论坛徽章:
3
2008北京奥运纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44授权会员
日期:2009-01-21 21:49:40ERP板块每日发贴之星
日期:2010-05-21 01:01:01
发表于 2008-7-4 00:44:02 |显示全部楼层
现在有一个内表,其中有5个字段:
material    plant    xxxx    xxxxx     xxxxxxxx   (后面三个字段不重要)
内表中大概有几万条数据。
现在要求,找出改内表中 material   plant字段内容重复的数据。

(比如):
material     plant    xxxx    xxxxx     xxxxxxxx   (后面三个字段不重要)
mm_g_01   9001    ....      .......       ............
mm_g_02   9001    ....      .......       ............
mm_g_01   9001    ..        ....          .....
以上这个表的第一条和第三条重复。

怎么样找是比较优化的算法,大家给点思路啊(是找,不是删除哦)。

注册会员

大庆

精华贴数
0
技术积分
6201
社区积分
50184
注册时间
2004-11-19
论坛徽章:
35
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
发表于 2008-7-4 09:59:48 |显示全部楼层
只能循环找吧.没有啥好的了.

使用道具 举报

注册会员

动作要快

精华贴数
0
技术积分
478
社区积分
201
注册时间
2007-1-8
论坛徽章:
4
授权会员
日期:2008-10-10 10:43:39八级虎吧徽章
日期:2008-12-11 17:53:25生肖徽章2007版:狗
日期:2009-06-08 09:13:54
发表于 2008-7-4 10:09:26 |显示全部楼层
循环一次,利用另一个内表进行对比。
我终究没能飙得过那辆宝马,只能眼看着它在夕阳中绝尘而去,不是我的引擎不好,而是我的车链子掉了

使用道具 举报

注册会员

後輩

精华贴数
0
技术积分
624
社区积分
0
注册时间
2005-10-7
论坛徽章:
3
2008北京奥运纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44授权会员
日期:2009-01-21 21:49:40ERP板块每日发贴之星
日期:2010-05-21 01:01:01
发表于 2008-7-4 11:28:38 |显示全部楼层
目前想到比较好的办法是:
data cnt_flg type i.

sort it_material by material plant.
loop it_material into he_material.
  clear fnt_flg.
  at new plant.
     cnt_flg = cnt_flg + 1.
  endat.

  at end of plant.
     cnt_flg = cnt _flg + 1.
  endat.
endloop.

如果标志cnt_flg的结果不是1,那么它就是重复的纪录。如果标志为2。那么就没有和它重复的纪录。

不知道,大家有没有效率更高的方法,希望大家提出更多方案。
谢谢!

使用道具 举报

精华贴数
0
技术积分
403
社区积分
0
注册时间
2008-3-12
论坛徽章:
0
发表于 2008-7-4 13:41:00 |显示全部楼层
怎么做都的LOOP.

[ 本帖最后由 dreamgift 于 2008-7-4 13:54 编辑 ]

使用道具 举报

精华贴数
0
技术积分
403
社区积分
0
注册时间
2008-3-12
论坛徽章:
0
发表于 2008-7-4 14:04:23 |显示全部楼层
这样应该不错.

[ 本帖最后由 dreamgift 于 2008-7-4 14:06 编辑 ]

使用道具 举报

注册会员

中级会员

精华贴数
0
技术积分
703
社区积分
1
注册时间
2006-10-24
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44玉兔
日期:2008-04-08 10:52:562008北京奥运纪念徽章:击剑
日期:2008-04-23 15:45:112008北京奥运纪念徽章:皮划艇静水
日期:2008-04-24 10:00:112008北京奥运纪念徽章:沙滩排球
日期:2008-07-22 10:07:26
发表于 2008-7-4 14:40:10 |显示全部楼层
原帖由 weddingmax 于 2008-7-4 00:44 发表
现在有一个内表,其中有5个字段:
material    plant    xxxx    xxxxx     xxxxxxxx   (后面三个字段不重要)
内表中大概有几万条数据。
现在要求,找出改内表中 material   plant字段内容重复的数据。

(比如):
material     plant    xxxx    xxxxx     xxxxxxxx   (后面三个字段不重要)
mm_g_01   9001    ....      .......       ............
mm_g_02   9001    ....      .......       ............
mm_g_01   9001    ..        ....          .....
以上这个表的第一条和第三条重复。

怎么样找是比较优化的算法,大家给点思路啊(是找,不是删除哦)。



SORT ITAB BY material plant.
Delete  adjacent duplicates from itab comparing fileds material plant.
SAP: PP Module  / ABAPer
多学多问,一切皆来自于努力。

使用道具 举报

注册会员

後輩

精华贴数
0
技术积分
624
社区积分
0
注册时间
2005-10-7
论坛徽章:
3
2008北京奥运纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44授权会员
日期:2009-01-21 21:49:40ERP板块每日发贴之星
日期:2010-05-21 01:01:01
发表于 2008-7-4 18:31:49 |显示全部楼层
原帖由 george_506 于 2008-7-4 14:40 发表



SORT ITAB BY material plant.
Delete  adjacent duplicates from itab comparing fileds material plant.


谢谢,但是这个做法应该是在删除重复的数据吧?
我想要不删除的方法。

使用道具 举报

精华贴数
0
技术积分
2
社区积分
0
注册时间
2008-7-25
论坛徽章:
0
发表于 2008-9-7 20:17:41 |显示全部楼层
可用一条GROUP BY 的SQL语句,并使用HAVING条件:
select  material,  plant   from  tablename  group by material,  plant  having count(*)>1

[ 本帖最后由 microobj 于 2008-9-7 20:19 编辑 ]

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
153
社区积分
0
注册时间
2005-6-4
论坛徽章:
0
发表于 2008-9-9 00:00:23 |显示全部楼层

回复 #9 microobj 的帖子

这只能对实体表进行操作吧,可如果是内表呢?

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部