J'ai pourtant l'impression que ça convient bien : c'est bien interprété, et par exemple si j'exécute la requête incluse seule, elle fonctionne.
Mes messages d'erreur me mettent le code interprété, et il est bon :
(Je l'appelle 3 fois avec des valeurs indiquées en dur pour voir si ça marche, et ces valeurs sont bien reprises)
Toutes mes excuses mais reho.st est mort, donc je passe par HostingPics (vignette cliquable) :
J'ai l'impression qu'il y a (encore) une particularité liée à SAS que j'ignore...
Merci quand même, ça me confirme au moins qu'il n'y a pas une énormité dans ma requête que j'aurais ratée
Chelmi18
Posté le 04-02-2016 à 09:26:40
Si c'est du "vrai" SQL, quelque chose m'échappe : tu fais (B - A) où B est une colonne et A une valeur ?
Tu ne soustrairais pas des choux et des carottes ?
rufo
Pas me confondre avec Lycos!
Posté le 04-02-2016 à 09:38:07
Je pense qu'il veut dire que b désigne une valeur de la colonne val_nx.
Donc, il calcule pour chaque enregistrement dans la table table_q, (val_nx - a).
Edit : cela dit, ça serait pas plus simple de faire : select q, (b-a) as Diff from etape01.table_q ORDER BY Diff Limit 0, 1
Limit 0, 1 c'est pour avoir juste le premier enregistrement ayant le Diff le plus faible. Ca évite la sous-requête.
Chelmi18 > En fait, &b est effectivement le nom de la colonne et &a une valeur, mais cette valeur &a est interprétée comme une matrice de dimension (1,n) qui contiendrait tout le temps la meme valeur. Ca fonctionne quand les requêtes ne sont pas imbriquées.
rufo > J'ai fait des tests avec LIMIT, je voulais faire des SORT BY puis récupérer mon minimum avec un LIMIT... sauf que LIMIT n'est pas reconnu par SAS (quel logiciel en mousse, au prix qu'il coute... ) Il faut le préciser via un outobs= mais qui s'applique à toute la proc, ça ne m'arrange pas du coup.
Je crois que je vais devoir forcément créer deux proc SQL à la suite pour réussir à faire mon truc.