你好,
我試圖在將兩個數據表與源列組合後選擇(並刪除)重複項,我有兩個選擇標準:
- 重複值應該匹配在 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);