你好,
我试图在将两个数据表与源列组合后选择(并删除)重复项,我有两个选择标准:
- 重复值应该匹配在 2 列中(匹配:col1,:col2),工作正常。
- 重复值应该不是在生成的源列中具有相同的值。
我不确定如何编写第二个标准,是否有一些简单的 != 行或“不”匹配“:源表”?
dt1 << concatenate (dt1, dt2, append to first table(1), Create Source Column ) ;
dt1 << Select Duplicate Rows (Match (:col1, :col2)) ;
dt1 << Delete Rows();
我认为你需要采取不同的方法。您提交的 JSL 有几个问题,以及对“选择重复行”函数的误解。
您的串联语句创建一个新的数据表,其中数据表 dt1 在输出表中复制两次。
“选择重复行”功能仅查找同一列中的重复项。
我建议您考虑使用 Join 平台,该平台能够确定两个数据表之间的哪些行具有重复值。
下面是一个比较两个数据表并发现名为 Robert 的人在两个表中的示例。

Names Default To Here( 1 );
dt1 = New Table( "one",
Add Rows( 20 ),
New Column( "name",
Character,
"Nominal",
Set Values(
{"KATIE", "LOUISE", "JANE", "JACLYN", "LILLIE", "TIM", "JAMES", "ROBERT", "BARBARA", "ALICE",
"SUSAN", "JOHN", "JOE", "MICHAEL", "DAVID", "JUDY", "ELIZABETH", "LESLIE", "CAROL", "PATTY"}
)
)
);
dt2 = New Table( "Two",
Add Rows( 20 ),
New Column( "name",
Character,
"Nominal",
Set Values(
{"FREDERICK", "ALFRED", "HENRY", "LEWIS", "EDWARD", "CHRIS", "JEFFREY", "MARY", "AMY", "ROBERT",
"WILLIAM", "CLAY", "MARK", "DANNY", "MARTHA", "MARION", "PHILLIP", "LINDA", "KIRK", "LAWRENCE"}
)
)
);
dt3 = dt1 << Join(
With( dt2 ),
Merge Same Name Columns,
By Matching Columns( :name = :name ),
Drop multiples( 1, 0 ),
Include Nonmatches( 1, 1 ),
Preserve main table order( 1 ),
Output Table( "together" )
);
dt3 << select where( :Match Flag == 3 );
//dt3 << Delete Rows();
//dt3 << delete columns(match flag);