Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Hallo,
Ich habe eine Liste von Produkten (> 100) mit unterschiedlichen Produktcodes für jedes Produkt. Ich möchte eine neue Spalte „Produktcodebereich“ erstellen, in der der Produktcode für jedes Produkt verkettet wird, wie im folgenden Beispiel gezeigt. Wie schreibe ich JSL-Code, der diese Aufgabe erledigen kann?

Automatisierung und SkripterstellungDatenmischung und -bereinigungBetreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Jim.
Es ist großartig.Danke schön.
Ich lerne heute Neues
Betreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Jarmo,
Danke schön. Alle angebotenen Lösungen sind großartig.
Es wird mir beim Lernen helfen.
Betreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Und hier ist noch eine weitere Möglichkeit, dies zu tun: Verwenden von 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 )],
"/"
);
)
);

Betreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Mir kam eine weitere Option in den Sinn, die keine Skripterstellung erfordert (aber leicht per Skript erstellt werden kann/JMP kann es größtenteils per Skript erstellen) (beachten Sie, dass sich die Reihenfolge mit dieser Methode höchstwahrscheinlich ändern wird).
1. Teilen Sie die Originaldaten auf

2. Wählen Sie alle Spalten aus, die mit P beginnen, und erstellen Sie mit Cols/Combine Columns eine neue Spalte

3. Verknüpfen Sie die neue Tabelle mit der neuen kombinierten Spalte mit den Originaldaten

4. Ergebnis:

Betreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Eine andere Möglichkeit könnte darin bestehen, ein assoziatives Array mit Produkten als Schlüssel und Produktcodes in einer Liste als Werten zu erstellen und dann eine neue Spalte damit zu füllen. Dies erfordert JMP16 aufgrund von For Each, kann aber bei Bedarf durch eine For-Schleife ersetzt werden
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], "/");
));Betreff: Wie verkette ich eine Zeichenfolge über mehrere Zeilen nach Gruppe?Ich habe ein Add-In geschrieben, das dabei helfen kann Gruppieren Sie Listagg-Spalten . Es verwendet eine SQL-Abfrage, um den LISTAGG-Vorgang auszuführen. Sie können das Add-In installieren und den Code von dort übernehmen. Die Grundidee ist etwa so:
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
);

und verbinden Sie dt_concat dann wieder mit der ursprünglichen Tabelle
JSL-Syntaxreferenz > Für JMP-Abfragen verfügbare SQL-Funktionen > SQL-Funktionen aggregieren