Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLJ'utilise JSL pour extraire des données de SQL. Dans une instruction Where, je définis manuellement le ShopOrderID. Comment puis-je créer une chaîne (liste) de valeurs uniques provenant de différentes tables JMP et l'utiliser comme variable pour extraire des données de la table SQL ?
J'ai essayé la fonction de résumé mais cela n'a pas fonctionné.

Analyse et modélisation des données de baseRe : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLUtilisez Summary pour créer une liste d'éléments, puis concaténez les éléments pour les transformer en chaîne que SQL peut comprendre.
Par exemple, si vous pouvez utiliser 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 : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLSalut @ConfidenceOwl94
Voir « Importer des données correspondantes à partir d'une table de données existante » dans la documentation d'aide sous Créer une requête SQL.
Dans le triangle rouge de la colonne Filtres, sélectionnez Type de filtre, puis sélectionnez Correspondance des valeurs de colonne.
acclamations,
Stan
Re : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLMerci Jarmo,
Qu'est-ce que je fais mal ?

Re : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLVous devez l'évaluer à l'intérieur de votre chaîne
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);
J'utilise « ¤ » au lieu de m'appuyer sur le « ^ » par défaut, car il peut apparaître de temps en temps dans certains modèles d'expressions régulières.
Re : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLMerci Jarmo,
J'ai utilisé le script que vous avez suggéré. Il stocke le numéro de commande dans sql_in. Cependant, la requête SQL n'extrait aucune donnée.
J'ai confirmé que SQL fonctionne correctement lorsque j'utilise WHERE (a.ShopOrderId = '12345') pour extraire des données.
Qu'est-ce que je fais de mal ?
Merci d'avance
Re : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLD'une manière ou d'une autre, le script n'était pas joint à mon dernier message.
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 : Créer une chaîne de valeur de colonne unique pour l'extraction de données SQLUne fois la requête créée, vous devez l'exécuter. Je suggère d'utiliser New SQL Query() plutôt qu'Open Database(), car c'est la méthode la plus récente et la seule en cours de développement (même si elle est la moins conviviale).