Crear una cadena con un valor de columna único para la extracción de datos de SQLEstoy usando JSL para extraer datos de SQL. En una instrucción Where, defino manualmente ShopOrderID. ¿Cómo puedo crear una cadena (lista) con todos los valores únicos de diferentes tablas de JMP y usarla como variable para extraer datos de una tabla de SQL?
Probé la función de resumen pero no funcionó.

Análisis y modelado de datos básicosRe: Crear una cadena con un valor de columna único para la extracción de datos de SQLUtilice resumir para crear una lista de elementos y luego concatenar elementos para convertirla en una cadena que SQL pueda entender.
Por ejemplo, si puedes usar 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')"
Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLHola @ConfidenceOwl94
Consulte " Importar datos coincidentes de una tabla de datos existente " en la documentación de ayuda en Crear una consulta SQL.
Desde el triángulo rojo de la columna Filtros, seleccione Tipo de filtro y, a continuación, seleccione Coincidir valores de columna.
salud,
Stan
Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLGracias Jarmo,
¿Qué estoy haciendo mal?

Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLTienes que evaluarlo dentro de tu cadena.
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);
Utilizo "¤" en lugar de confiar en el "^" predeterminado, como puede aparecer de vez en cuando en algunos patrones de expresiones regulares.
Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLGracias Jarmo,
Usé el script que me sugeriste. Almacena el número de pedido en sql_in. Pero la consulta SQL no extrae ningún dato.
Confirmé que SQL funciona bien cuando uso WHERE (a.ShopOrderId = '12345') para extraer datos.
¿Qué estoy haciendo mal?
gracias de antemano
Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLDe alguna manera el guión no se adjuntó a mi último mensaje.
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);
Re: Crear una cadena con un valor de columna único para la extracción de datos de SQLDespués de tener la consulta, debe ejecutarla. Recomiendo usar New SQL Query() en lugar de Open Database(), ya que es el método más reciente y el único en desarrollo (aunque es el más difícil de usar).