Come concatenare una stringa su più righe per gruppo?Ciao,
Ho un elenco di prodotti (> 100) con diversi codici prodotto di ciascun prodotto. Vorrei creare una nuova colonna "Intervallo codice prodotto" che concatena il codice prodotto per ciascun prodotto come mostrato di seguito nell'esempio. Come scrivere codice JSL in grado di eseguire questa attività?

ScriptingRi: Come concatenare una stringa su più righe per gruppo?Jim.
È grande.Grazie.
Imparo una cosa nuova oggi
Ri: Come concatenare una stringa su più righe per gruppo?Jarmo,
Grazie. Tutte le soluzioni fornite sono fantastiche.
Mi aiuterà nel mio apprendimento.
Ri: Come concatenare una stringa su più righe per gruppo?Ed ecco un altro modo per farlo, usando Get Rows Where()
New Column( "PRC",
character,
set each value(
theProduct = :Product[Row()];
Concat Items(
:Product Code[Current Data Table() << get rows where( :Product == theProduct )],
"/"
);
)
);

Ri: Come concatenare una stringa su più righe per gruppo?Mi è venuta in mente un'altra opzione che non richiederà alcuno scripting (ma può essere facilmente scriptato/JMP può principalmente scriverlo) (si noti che molto probabilmente l'ordine cambierà con questo metodo).
1. Dividi i dati originali

2. Seleziona tutte le colonne che iniziano con P e usa Cols/Combine Columns per creare una nuova colonna

3. Unisci la nuova tabella con la nuova colonna combinata ai dati originali

4. Risultato:

Ri: Come concatenare una stringa su più righe per gruppo?Un'altra opzione potrebbe essere quella di creare un array associativo con prodotti come chiavi e codici prodotto in un elenco come valori e quindi riempire una nuova colonna con quello. Ciò richiede JMP16 a causa di For Each, ma può essere sostituito con For-loop se necessario
Names Default To Here(1);
dt = Current Data Table();
aa = Associative Array(:Product << get values);
For Each({{key, value}}, aa,
aa[key] = dt[Loc(dt[0, "Product"], key), "Product Code"];
);
dt << New Column("Product Code Range", Character, Nominal, << Set Each Value(
Concat Items(aa[:Product], "/");
));Ri: Come concatenare una stringa su più righe per gruppo?Ho scritto addin che può aiutare con questo Gruppo Listagg Colonne . Sta usando sql-query per eseguire l'operazione LISTAGG. Potresti installare il componente aggiuntivo e prendere il codice da lì. L'idea di base è qualcosa del genere:
Names Default To Here(1);
dt = Current Data Table();
custom_sql = Eval Insert(
"\[SELECT Product, GROUP_CONCAT(DISTINCT CAST("Product Code" as TEXT)) as "Product Code Range"
FROM t1
GROUP BY Product
]\");
dt_concat = Query(
Table(dt, "t1"),
custom_sql
);

e quindi unire dt_concat alla tabella originale
Riferimento sintassi JSL > Funzioni SQL disponibili per query JMP > Funzioni SQL aggregate