如何按组连接多行字符串?你好,
我有一个产品列表(> 100),每个产品都有不同的产品代码。 我想创建新列“产品代码范围”,它将每个产品的产品代码连接起来,如下例所示。 如何编写可以完成此任务的 JSL 代码?

自动化和脚本编写数据混合和清理回复:如何按组连接多行字符串?吉姆.
太好了。谢谢。
我今天学到了新东西
回复:如何按组连接多行字符串?雅尔莫,
谢谢。 提供的所有解决方案都很棒。
这将对我的学习有所帮助。
回复:如何按组连接多行字符串?这是另一种方法,使用 Get RowsWhere()
New Column( "PRC",
character,
set each value(
theProduct = :Product[Row()];
Concat Items(
:Product Code[Current Data Table() << get rows where( :Product == theProduct )],
"/"
);
)
);

回复:如何按组连接多行字符串?我想到了另一个选项,它不需要任何脚本编写(但可以轻松编写脚本/JMP 主要可以编写脚本)(请注意,使用此方法,顺序很可能会改变)。
1. 拆分原始数据

2. 选择所有以 P 开头的列,然后使用 Cols/Combine Columns 创建新列

3. 将新表与新组合列连接到原始数据

4、结果:

回复:如何按组连接多行字符串?其他选项可能是创建关联数组,其中产品作为键,列表中的产品代码作为值,然后用它填充新列。 由于 For Each,这需要 JMP16,但如果需要,可以用 For-loop 替换
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], "/");
));回复:如何按组连接多行字符串?我写了一个插件可以帮助解决这个问题组列表标签列。 它使用sql-query来执行LISTAGG操作。 您可以安装插件并从那里获取代码。 基本想法是这样的:
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 连接回原始表
JSL 语法参考 > 可用于 JMP 查询的 SQL 函数 > 聚合 SQL 函数