0

我正在尝试基于一个键加入两个文件,并根据一个条件在结果中添加一个新列,但我无法弄清楚为什么我的命令条件不起作用。请帮助我理解这样做的正确方法。

一个.txt

3~Y
4~0
1~Y
2~N

b.txt

4~44~444
3~33~333
2~22~222
1~11~111

同步排序命令

/INFILE a.txt  ALIAS DOC '~' 3000
/JOINKEYS BA1
/FIELD DOC_Rest1 2:1 - 2:
/INFILE b.txt ALIAS FINACT '~' 3000
/JOINKEYS BA2
/FIELD FINACT_DID 2:1 - 2:
/FIELD FINACT_PILOT 3:1 - 3:
/FIELDS BA1 1:1 - 1:, BA2 1:1 - 1:
/COND CHKINCCALS (DOC_Rest1 = 'Y')
/DERIVEDFIELD  endofrecord '\n'
/DERIVEDFIELD TYPECAL
        If CHKINCCALS then FINACT_DID
        Else FINACT_PILOT
/OUTFILE c.txt OVERWRITE  /REFORMAT  LEFTSIDE:BA1,LEFTSIDE:DOC_Rest1, TYPECAL, endofrecord
/END

预期结果

1~Y~11~
2~N~222~
3~Y~33~
4~0~222~

实际结果

1~Y~Y~
2~N~~
3~Y~Y~
4~0~~
4

1 回答 1

0

经过一些猜测工作,我能够找出正确的方法。我仍然不确定它是如何工作的。

/INFILE a.txt  ALIAS DOC '~' 3000
/JOINKEYS BA1
/FIELD DOC_Rest1 2:1 - 2:
/INFILE b.txt ALIAS FINACT '~' 3000
/JOINKEYS BA2
/FIELD FINACT_DID 2:1 - 2:
/FIELD FINACT_PILOT 3:1 - 3:
/FIELDS BA1 1:1 - 1:, BA2 1:1 - 1:
/COND CHKINCCALS (DOC_Rest1 = 'Y')
/DERIVEDFIELD  endofrecord '\n'
/DERIVEDFIELD TYPECAL
        If CHKINCCALS then RIGHTSIDE:FINACT_DID
        Else RIGHTSIDE:FINACT_PILOT
/OUTFILE c.txt OVERWRITE  /REFORMAT  LEFTSIDE:BA1,LEFTSIDE:DOC_Rest1, TYPECAL, endofrecord
/END
于 2016-09-28T21:33:36.957 回答