ITPUB??ì3
ITPUB论坛 » SAP R/3 » 系统开发及跨应用设置 » 大家来列举一下查找同一内表中重复记录的最优化的算法


您有 2 条公共消息
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...
  • 来自: 公共消息 标题: ITPUB邮箱已经恢复 内容: ITPUB邮箱用户请注意,邮箱现在已经恢复 web访问地址 http://emai ...

    标题: 大家来列举一下查找同一内表中重复记录的最优化的算法
    离线 weddingmax
    後輩


    精华贴数 0
    个人空间 0
    技术积分 574 (4053)
    社区积分 0 (658522)
    注册日期 2005-10-7
    论坛徽章:2
    授权会员2008北京奥运纪念徽章:皮划艇静水    
          

    发表于 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    ..        ....          .....
    以上这个表的第一条和第三条重复。

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


    __________________
    MM+ABAPer
    只看该作者    顶部
    离线 ryq0000
    大庆


    精华贴数 0
    个人空间 50
    技术积分 6202 (267)
    社区积分 50177 (22)
    注册日期 2004-11-19
    论坛徽章:33
    NBA季后赛纪念徽章2010新春纪念徽章    
          

    发表于 2008-7-4 09:59 
    只能循环找吧.没有啥好的了.


    __________________
    只看该作者    顶部
    离线 king2127
    动作要快


    来自 GZ
    精华贴数 0
    个人空间 0
    技术积分 460 (5075)
    社区积分 191 (3017)
    注册日期 2007-1-8
    论坛徽章:4
    八级虎吧徽章授权会员生肖徽章2007版:狗   
          

    发表于 2008-7-4 10:09 
    循环一次,利用另一个内表进行对比。


    __________________
    我终究没能飙得过那辆宝马,只能眼看着它在夕阳中绝尘而去,不是我的引擎不好,而是我的车链子掉了
    只看该作者    顶部
    离线 weddingmax
    後輩


    精华贴数 0
    个人空间 0
    技术积分 574 (4053)
    社区积分 0 (658522)
    注册日期 2005-10-7
    论坛徽章:2
    授权会员2008北京奥运纪念徽章:皮划艇静水    
          

    发表于 2008-7-4 11:28 
    目前想到比较好的办法是:
    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。那么就没有和它重复的纪录。

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


    __________________
    MM+ABAPer
    只看该作者    顶部
    离线 dreamgift



    精华贴数 0
    个人空间 0
    技术积分 393 (5916)
    社区积分 0 (1780981)
    注册日期 2008-3-12
    论坛徽章:0
          
          

    发表于 2008-7-4 13:41 
    怎么做都的LOOP.

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


    只看该作者    顶部
    离线 dreamgift



    精华贴数 0
    个人空间 0
    技术积分 393 (5916)
    社区积分 0 (1780981)
    注册日期 2008-3-12
    论坛徽章:0
          
          

    发表于 2008-7-4 14:04 
    这样应该不错.

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


    只看该作者    顶部
    离线 george_506
    中级会员


    精华贴数 0
    个人空间 0
    技术积分 705 (3287)
    社区积分 1 (51397)
    注册日期 2006-10-24
    论坛徽章:5
    玉兔2008北京奥运纪念徽章:沙滩排球2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:击剑ITPUB新首页上线纪念徽章 
          

    发表于 2008-7-4 14:40 


    QUOTE:
    原帖由 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
    多学多问,一切皆来自于努力。
    只看该作者    顶部
    离线 weddingmax
    後輩


    精华贴数 0
    个人空间 0
    技术积分 574 (4053)
    社区积分 0 (658522)
    注册日期 2005-10-7
    论坛徽章:2
    授权会员2008北京奥运纪念徽章:皮划艇静水    
          

    发表于 2008-7-4 18:31 


    QUOTE:
    原帖由 george_506 于 2008-7-4 14:40 发表



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

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


    __________________
    MM+ABAPer
    只看该作者    顶部
    离线 microobj



    精华贴数 0
    个人空间 0
    技术积分 2 (275237)
    社区积分 0 (1894483)
    注册日期 2008-7-25
    论坛徽章:0
          
          

    发表于 2008-9-7 20:17 
    可用一条GROUP BY 的SQL语句,并使用HAVING条件:
    select  material,  plant   from  tablename  group by material,  plant  having count(*)>1

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


    只看该作者    顶部
    离线 aaastop
    初级会员



    精华贴数 0
    个人空间 0
    技术积分 153 (13879)
    社区积分 0 (458374)
    注册日期 2005-6-4
    论坛徽章:0
          
          

    发表于 2008-9-9 00:00 
    回复 #9 microobj 的帖子

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


    只看该作者    顶部
    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    E-mail:Webmaster@itpub.net
    网站律师 隐私政策 知识产权声明
    京ICP证:060528号 联系我们