Ciao,
Sto cercando di selezionare (ed eliminare) i duplicati dopo aver combinato due tabelle di dati con una colonna di origine, ho 2 criteri per una selezione:
-I valori duplicati Dovrebbe incontro in 2 colonne (Match :col1, :col2), funziona bene.
-I valori duplicati Dovrebbe non hanno lo stesso valore nella colonna di origine generata.
Non sono sicuro di come posso codificare il secondo criterio, c'è qualche semplice != riga o 'non' corrisponde a ':Source Table'?
dt1 << concatenate (dt1, dt2, append to first table(1), Create Source Column ) ;
dt1 << Select Duplicate Rows (Match (:col1, :col2)) ;
dt1 << Delete Rows();
Penso che tu debba adottare un approccio diverso.Il tuo JSL inviato presenta un paio di problemi e un'interpretazione errata della funzione Seleziona righe duplicate.
L'istruzione Concatenation crea una nuova tabella di dati in cui la tabella di dati dt1 viene replicata due volte nella tabella di output.
La funzione Seleziona righe duplicate trova solo i duplicati all'interno della stessa colonna.
Ti suggerisco di esaminare l'utilizzo della piattaforma Join, che ha la capacità di determinare quali righe tra le 2 tabelle di dati hanno valori duplicati.
Ecco un esempio di confronto tra 2 tabelle di dati e di constatazione che la persona di nome Robert si trova in entrambe le tabelle.

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);Grazie Jim, funziona bene!
Felice di saperne di più sulla funzione Partecipa.
Saluti,
Stijn