Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufIch verwende JSL, um Daten aus SQL abzurufen. In einer Where-Anweisung definiere ich die ShopOrderID manuell. Wie kann ich eine Zeichenfolge (Liste) aller eindeutigen Werte aus verschiedenen JMP-Tabellen erstellen und diese als Variable verwenden, um Daten aus der SQL-Tabelle abzurufen?
Ich habe die Zusammenfassungsfunktion ausprobiert, aber sie hat nicht funktioniert.

Grundlegende Datenanalyse und -modellierungBetreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufVerwenden Sie „summary“, um eine Liste von Elementen zu erstellen, und verketten Sie dann die Elemente, um sie in eine Zeichenfolge zu packen, die SQL verstehen kann.
Wenn Sie beispielsweise IN verwenden können
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq = By(:age));
sql_in = "('" || Concat Items(uniq, "', '") || "')"; // "('12', '13', '14', '15', '16', '17')"
Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufHallo @ConfidenceOwl94
Weitere Informationen finden Sie in der Hilfedokumentation unter „Erstellen einer SQL-Abfrage“ unter „ Importieren übereinstimmender Daten aus einer vorhandenen Datentabelle “.
Wählen Sie im roten Dreieck in der Spalte „Filter“ den Filtertyp und dann „Spaltenwerte abgleichen“ aus.
Prost,
Stan
Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufDanke, Jarmo,
Was mache ich falsch?

Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufSie müssen es innerhalb Ihrer Zeichenfolge auswerten
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq = By(:age));
sql_in = "('" || Concat Items(uniq, "', '") || "')"; // "('12', '13', '14', '15', '16', '17')"
sql_template = "\[
SELECT *
FROM *
WHERE
col IN ¤sql_in¤
]\";
sql_str = Eval Insert(sql_template, "¤");
show(sql_str);
Ich verwende „¤“, anstatt mich auf das Standardzeichen „^“ zu verlassen, das in einigen Regex-Mustern gelegentlich vorkommen kann.
Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufDanke, Jarmo,
Ich habe das von Ihnen vorgeschlagene Skript verwendet. Es speichert die Bestellnummer in SQL_IN. Die SQL-Abfrage ruft jedoch keine Daten ab.
Ich habe bestätigt, dass SQL einwandfrei funktioniert, wenn ich WHERE (a.ShopOrderId = '12345') zum Abrufen von Daten verwende.
Was mache ich falsch?
Dank im Voraus
Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufAus irgendeinem Grund war meiner letzten Nachricht kein Skript beigefügt.
Names Default To Here(1);
dt = current data table();
Summarize(dt, uniq = By(:OrderNumber));
sql_in = "('" || Concat Items(uniq, "', '") || "')";//"('1','2','3','4','5')"
/********************Connection Strings*******************************/
TestDataConnString = "DRIVER=AAA; SERVER=AAA; UID=AAA; PWD=AAA; DATABASE=AAA";
Data="\[SELECT
a.[ShopOrderId] ,[BuildSerialNumber] ,[DateCode] ,a.[ItemNumber], t4.ItemNumber AS PartNumber
,string_agg(a.[LotNumber],', ') AS Lots
FROM [Employee].[dbo].[vw_LotQuery] a
JOIN Employee.dbo.MFGTravelerShopOrders t2 with (NOLOCK) ON t2.ShopOrderID=a.ShopOrderId
JOIN Employee.dbo.MFG_ItemMasters t4 with (NOLOCK) ON t4.ItemNumber=t2.ItemNumber
WHERE
col IN ¤sql_in¤
AND
(a.[ItemNumber] LIKE '%PM%' OR a.[ItemNumber] LIKE '%PW%')
Group by a.[ShopOrderId] ,[BuildSerialNumber] ,[DateCode] ,a.[ItemNumber], t4.ItemNumber
Order by [BuildSerialNumber]
]\";
sql_str = Eval Insert(Data, "¤");
show(sql_str);
Betreff: Erstellen Sie eine Zeichenfolge mit eindeutigen Spaltenwerten für den SQL-DatenabrufNachdem Sie die Abfrage erstellt haben, müssen Sie sie ausführen. Ich empfehle die Verwendung von New SQL Query() anstelle von Open Database(), da dies die neueste und einzige Methode ist, die weiterentwickelt wird (obwohl sie die benutzerfreundlichste ist).