我正在尝试基于一个键加入两个文件,并根据条件在结果中添加一个新列,但我无法弄清楚为什么我的命令条件不起作用。请帮助我理解这样做的正确方法。
A.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~~
答案 0 :(得分: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