Bonjour,
J'essaie de sélectionner (et de supprimer) des doublons après avoir combiné deux tables de données avec une colonne source, j'ai 2 critères de sélection :
-Les valeurs en double devrait correspondre en 2 colonnes (Match :col1, :col2), fonctionne bien.
-Les valeurs en double devrait pas ont la même valeur dans la colonne source générée.
Je ne sais pas comment je peux coder le 2ème critère, y a-t-il une ligne simple != ou 'ne correspond pas' à ':Source Table' ?
dt1 << concatenate (dt1, dt2, append to first table(1), Create Source Column ) ;
dt1 << Select Duplicate Rows (Match (:col1, :col2)) ;
dt1 << Delete Rows();
Je pense que tu dois adopter une approche différente.Votre JSL soumis a quelques problèmes et une mauvaise interprétation de la fonction Select Duplicate Rows.
Votre instruction de concaténation crée une nouvelle table de données dans laquelle votre table de données dt1 est répliquée deux fois dans la table de sortie.
La fonction Sélectionner les lignes en double ne trouve que les doublons dans la même colonne.
Je vous suggère d'utiliser la plate-forme Join, qui a la capacité de déterminer quelles lignes entre les 2 tables de données ont des valeurs en double.
Voici un exemple de comparaison entre 2 tables de données et de constatation que la personne nommée Robert est dans les deux tables.

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);Merci Jim, ça marche bien !
Heureux d'en savoir plus sur la fonction Joindre.
Salutations,
Stijn