Généraliser le code pour qu'il fonctionne avec Summerize/Summary.
dt = table de données actuelle();
Résumer( g = Par(:Colonne 0, :Colonne 1 ) );
Pour( i = 1, i <= N éléments( g[1] ), i++,
r = dt << Obtenir les lignes Où( dt:Colonne 0 == g[1][i] & dt:Colonne 1 == g[2][i]);
dt:Colonne 3[r] = Concatérer les éléments( dt:Colonne 2[r], "_" );
);
nt = dt << Résumé( Groupe( :Colonne 0, :Colonne 1, :Colonne 3 ) );
très utile 
Jusqu'à présent, j'utilisais Split pour trier les entrées, les combiner et les fusionner dans la table principale :
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
<BR />//--------
dt << new column ("rank", Formula( Col Rank( :name, :age ) ));
// put names next to each other, grouped by age
DTsplit=dt<< Split(
Split By( :rank),
Split( :name ),
Group( :age )
);
// Combine columns to a linge column
DTsplit << Combine Columns(
columns(
:"1"n, :"2"n, :"3"n, :"4"n, :"5"n, :"6"n, :"7"n, :"8"n, :"9"n, :"10"n,
:"11"n, :"12"n
),
Column Name( "allNames" ),
Delimiter( "," )
);<BR /><BR />//-----
// Update data tables
dt<< Update(
With( DTsplit ),
Match Columns( :age = :age ),
Add Columns from Update Table( :allNames ),
Replace Columns in Main Table( None )
);obtenir:

Si Summarize avait une option pour concaténer des chaînes, toute la partie entre //---- pourrait être remplacée par un simple Summarize.