グループごとに複数の行にまたがる文字列を連結する方法は?こんにちは、
各製品の異なる製品コードを持つ製品 (> 100) のリストがあります。 以下の例に示すように、各製品の製品コードを連結する新しい列「製品コード範囲」を作成したいと考えています。 このタスクを実行できる JSL コードを作成するにはどうすればよいですか?

スクリプティングRe: グループごとに複数の行にまたがる文字列を連結する方法は?ジム。
それは素晴らしいです。ありがとう。
私は今日新しいことを学びます
Re: グループごとに複数の行にまたがる文字列を連結する方法は?ヤルモ、
ありがとう。 提供されるすべてのソリューションは素晴らしいです。
それは私の学習に役立ちます。
Re: グループごとに複数の行にまたがる文字列を連結する方法は?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 )],
"/"
);
)
);

Re: グループごとに複数の行にまたがる文字列を連結する方法は?スクリプトを必要としないもう1つのオプションが思い浮かびました(ただし、スクリプトは簡単に作成できます/ JMPはほとんどスクリプトを作成できます)(この方法では順序が変わる可能性が高いことに注意してください)。
1. 元データを分割する

2. P で始まるすべての列を選択し、Cols/Combine Columns を使用して新しい列を作成します。

3.新しい結合列を含む新しいテーブルを元のデータに結合します

4. 結果:

Re: グループごとに複数の行にまたがる文字列を連結する方法は?他のオプションは、製品をキーとしてリスト内の製品コードを値として連想配列を作成し、それを新しい列に入力することです。 これには For Each のため JMP16 が必要ですが、必要に応じて For ループに置き換えることができます
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], "/");
));Re: グループごとに複数の行にまたがる文字列を連結する方法は?これに役立つアドインを作成しましたリストタグ列のグループ化. LISTAGG操作を実行するためにsql-queryを使用しています。 アドインをインストールして、そこからコードを取得できます。 基本的な考え方は次のようなものです。
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
);

次に、dt_concat を元のテーブルに結合します
スクリプト構文リファレンス > JMPクエリで使用できるSQL関数 > 集計SQL関数