【问题标题】:SQL Compare 27 fields as 1 fieldSQL 比较 27 个字段为 1 个字段
【发布时间】:2017-12-10 22:23:13
【问题描述】:

我正在寻找文件中的重复记录 我需要比较 27 个字段它们都在一行中 有没有一种方法可以比较它们而无需将每个记录都输入(一种将记录格式子串化的方法数据)

我正在使用

Select RRN(a),
       RRN(b)
From   fileX a
Inner Join fileX b
    On RRN(a) < RRN(b)
       And a.FLD1 = b.FLD1
       And a.FLD2 = b.FLD2
       And a.FLD3 = b.FLD3
       And a.FLD5 = b.FLD5
       And a.FLD6 = b.FLD6
       And a.FLD7 = b.FLD7
       And a.FLD8 = b.FLD8
       And a.FLD9 = b.FLD9
       And a.FLD10 = b.FLD10
       And a.FLD11 = b.FLD11
       And a.FLD12 = b.FLD12
       And a.FLD13 = b.FLD13
       And a.FLD14 = b.FLD14
       And a.FLD15 = b.FLD15
       And a.FLD16 = b.FLD16
       And a.FLD17 = b.FLD17
       And a.FLD18 = b.FLD18
       And a.FLD19 = b.FLD19
       And a.FLD21 = b.FLD21
       And a.FLD22 = b.FLD22
       And a.FLD23 = b.FLD23
       And a.FLD24 = b.FLD24
       And a.FLD25 = b.FLD25
       And a.FLD26 = b.FLD26
       And a.FLD27 = b.FLD27

我想使用

Select RRN(a),
       RRN(b)
From   fileX a
Inner Join fileX b
    On RRN(a) < RRN(b)
       And substr(A.RCDFMT, 100, 54) = substr(B.RCDFMT, 100, 54)

我知道我可以将它们全部连接在一起,但这仍然意味着要输入所有字段名称,我只想要一个更短更简洁的选择。

【问题讨论】:

  • 您可能正在寻找INTERSECT
  • INTERSECT 仍然要求所有列都在语句中
  • 这就是 SQL 的工作原理。您可以通过过程或外部代码生成 SQL 语句并为您执行它,因为您正在徘徊在动态 SQL 的世界中。

标签: sql substring concatenation ibm-midrange


【解决方案1】:

创建一个将 27 个字段连接成一个字段的视图。

创建一个将 27 个字段连接成一个字段的逻辑文件。

create view mylib/myview as 
select a.fld1 || a.fld2 || a.fld3 
...
 as allfld
from mylib/myfile.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多