首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步排序和Fields=None不移除重复项

同步排序和Fields=None不移除重复项
EN

Stack Overflow用户
提问于 2016-08-08 21:19:27
回答 2查看 3.8K关注 0票数 0

我正在尝试运行一个SYNCSORT作业,它将删除重复的条目,当我运行它时,我仍然得到重复的条目。下面是我使用的SYNCSORT代码:

代码语言:javascript
复制
INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
              (61,1,CH,EQ,C'V')),AND,
              (8,2,CH,EQ,C'FL'))     
OUTREC FIELDS=(1:12,20,              
               30:36,20,             
               55:61,1)              
SORT FIELDS=(30,20,CH,A,             
             01,20,CH,A)             
SUM FIELDS=NONE                      

输入如下:

代码语言:javascript
复制
----+----1----+----2----+----3----+----4----+----5----+----6
      FL                           AMELIA CITY              
32034 FL  NASSAU                  FERNANDINA BEACH         P
32034 FL  NASSAU                  AMELIA CITY              V
32034 FL  NASSAU                  AMELIA ISLAND            S
32034 FL  NASSAU                  FERNANDINA               S

我得到了大部分的预期输出,除了我仍然得到重复。我的输出如下:

代码语言:javascript
复制
----+----1----+----2----+----3----+----4----+----5----+
MANATEE                      BRADENTON                P
MANATEE                      BRADENTON                P
MANATEE                      BRADENTON                P
MANATEE                      BRADENTON                P
MANATEE                      BRADENTON                P
MANATEE                      BRADINGTON               V
POLK                         BRADLEY                  P
HILLSBOROUGH                 BRANDON                  P
SUWANNEE                     BRANFORD                 P
MIAMI-DADE                   BRICKELL                 V

任何帮助都将不胜感激,因为我找不到我的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-08 23:29:53

这就是你总结的内容:

代码语言:javascript
复制
< ------------ Sort Field ----------------------->  
----+----1----+----2----+----3----+----4----+----5----+----6
      FL                           AMELIA CITY              
32034 FL  NASSAU                  FERNANDINA BEACH         P
32034 FL  NASSAU                  AMELIA CITY              V
32034 FL  NASSAU                  AMELIA ISLAND            S
32034 FL  NASSAU                  FERNANDINA               S

重复的记录在前11个字节中是不同的,看不到。尝试删除以检查。

可能的变化-

  • 将outrec更改为inrec
  • 重新编码与输出相关的字段的排序,请参见以下内容:

以下排序基于输出记录:

代码语言:javascript
复制
INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
               (61,1,CH,EQ,C'V')),AND,
              (8,2,CH,EQ,C'FL'))     
OUTREC FIELDS=(1:12,20,              
              30:36,20,             
              55:61,1)              
SORT FIELDS=(42,20,CH,A,             
             12,20,CH,A)             
SUM FIELDS=NONE
票数 4
EN

Stack Overflow用户

发布于 2016-08-09 22:05:35

不管您编写“排序”的不同阶段的顺序如何,它们都将按照排序所需的顺序执行。

在您的例子中,这将是INCLUDE,然后是SORT,然后是SUM,然后是OUTREC。您可以通过完全倒置控制卡来检查这种情况,您将得到相同的输出。

如果您想在使用INREC排序之前做一些事情,而不只是尝试在排序语句之前定位OUTREC。在这里,由于您是SORTing,所以只需要包含所需的数据。您不希望包括格式的间距。为什么要加载文件以便在每条记录上使用额外的相同数据进行排序?

对于INREC和OUTREC,请不要使用FIELDS。在OUTFIL上,请不要使用OUTREC。很明显,字段是“重载”的(查看您使用了多少次字段,并查看有多少字段是“相同的”),而OUTREC是“重载”的。十多年前,为了让事情变得更清晰,BUILD被引入了--它描述了它正在做什么,而且每次看到构建时,它只意味着构建。

代码语言:javascript
复制
 INCLUDE COND=(((61,1,CH,EQ,C'P'), 
                OR, 
                (61,1,CH,EQ,C'V')),
               AND, 
                (8,2,CH,EQ,C'FL')) 
 INREC BUILD=(36,20, 
              12,20, 
              61,1) 
 SORT FIELDS=(1,40,CH,A) 
 OUTREC BUILD=(21,10, 
               10X, 
               1,20, 
               5X, 
               41,1) 

INREC只选择所需的数据,并按只需指定一个排序键的顺序进行选择。

然后,OUTREC以您想要的方式格式化数据。对于排序中的每个记录,保存了15个字节(空白)。10X为10空白,5X为5空白。

请注意,如果包含“显式”空格而不是使用列号的隐式空格,则代码和理解要容易得多,因此更易于维护。对报表的10列进行成像,以及第一列和第二列之间的间隔是不正确的。您想要更改所有的列引用,只是为了增加一个空间,还是希望将7X更改为8X,其余的就会自行解决?即使你喜欢乏味的改变,记住你的同事:-)

如果您的数据已按顺序排列,请不要使用SUM FIELDS=NONE。使用报表功能,REMOVECCNODETAILSECTIONSTRAILER3从不为允许使用SUM FIELDS=NONE删除重复数据而对数据进行排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38838687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档