sélectionnez l'instruction where pour la comparaison des valeurs de colonneJe suis revenu à JSL après une longue pause et je me sentais rouillé.
Impossible d'obtenir une instruction select where. Je suis sûr que c'est assez simple.
J'essaie de sélectionner des lignes en comparant une valeur avec des valeurs dans deux autres colonnes.
dt << select where( :Col1 > :Col2 & :Col1< :Col3);
Col1 est un caractère (à dessein) car il doit être utilisé plus loin et Col2, Col3 sont des colonnes numériques.
Ce qui est faux?
J'ai même essayé de le faire à partir de l'interface graphique, mais cela ne semble pas fonctionner.
Merci
Re : sélectionnez l'instruction where pour la comparaison des valeurs de colonneSalut @ENTHU ,
Comme mentionné par @mzwald , les comparaisons >, <, etc. nécessitent des valeurs numériques pour travailler avec.
Une idée pour contourner cela pour votre :col1 (qui est nominal), est d'utiliser un codage numérique, comme 0, 1, 2, 3, 4 pour les différentes classes de caractères (si vous le pouvez), puis d'utiliser la propriété column " étiquettes de valeur" pour placer les caractères dans le rôle d'étiquette. De cette façon, vous pouvez effectuer les comparaisons, mais en même temps, lorsque vous tracez un graphique ou affichez le contenu de la colonne, les étiquettes de valeur s'affichent à la place.
Je l'ai testé avec un simple tableau à 3 colonnes et le même code de comparaison que vous avez écrit. La colonne 1 a des valeurs comprises entre 0 et 4, la colonne 2 est Random Normal(0) et la colonne 3 est Random Uniform(-1,1). Dans ce cas, il a sélectionné la ligne 6.
J'espère que cela t'aides!,
DS

Re : sélectionnez l'instruction where pour la comparaison des valeurs de colonneSalut @ENTHU ,
Je vois quelques points que vous devrez régler. Je suppose que vous essayez de référencer ces colonnes par leur occurrence dans la table de données ? Si c'est le cas, vous devrez ajuster la syntaxe pour faire la référence de cette manière (c'est-à-dire :Column(#)[] ). De plus, si votre première colonne est un type de données caractère, vous devrez envelopper la référence à cette colonne dans la fonction num() pour convertir les chaînes en une valeur numérique afin de faire la comparaison. Voici un code pour vous aider à démarrer :
dt = current data table();
dt << select where( num(:Column(1)[]) > :Column(2)[] & num(:Column(1)[]) < :Column(3)[]);
J'espère que ça aide!
@julien
Re : sélectionnez l'instruction where pour la comparaison des valeurs de colonnePour les comparaisons , toutes les colonnes doivent être numériques.