为 SQL 数据提取创建唯一列值的字符串我正在使用 JSL 从 SQL 中提取数据。在 Where 语句中,我手动定义了 ShopOrderID。如何将不同 JMP 表中所有唯一值组合成一个字符串(列表),并将其用作变量从 SQL 表中提取数据?
我尝试了总结功能,但是没有用。

基础数据分析与建模回复:为 SQL 数据提取创建唯一列值的字符串使用汇总来创建一个项目列表,然后连接项目将其构建为 sql 可以理解的字符串。
例如如果你可以使用 IN
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 数据提取创建唯一列值的字符串你好@ConfidenceOwl94
请参阅帮助文档中的“构建 SQL 查询”下的“ 从现有数据表导入匹配数据”。
从“过滤器”列中的红色三角形中,选择“过滤器类型”,然后选择“匹配列值”。
干杯,
斯坦
回复:为 SQL 数据提取创建唯一列值的字符串谢谢 Jarmo,
我做错了什么?

回复:为 SQL 数据提取创建唯一列值的字符串你必须在字符串中对其进行评估
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);
我使用“¤”而不是依赖默认的“^”,因为它可能会不时出现在某些正则表达式模式中。
回复:为 SQL 数据提取创建唯一列值的字符串谢谢 Jarmo,
我使用了你建议的脚本。它将订单号存储在 sql_in 中。但是 SQL 查询没有提取任何数据。
我确认当我使用WHERE (a.ShopOrderId = '12345')提取数据时 SQL 运行良好。
我做错了什么。
提前致谢
回复:为 SQL 数据提取创建唯一列值的字符串不知何故,脚本没有附加到我的最后一条消息中。
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);
回复:为 SQL 数据提取创建唯一列值的字符串获得查询后,您必须运行该查询。我建议使用 New SQL Query() 而不是 Open Database(),因为它是最新的方法,也是唯一正在进一步开发的方法(尽管它最不方便用户使用)。