Hello hello,
Je dois passer plusieurs fonctions SAS en SQL, et je ne suis pas à l'aise avec la création de fonctions SQL. Les fonctions en SAS ont cette tronche là par exemple :
Code :
macro fonction1(table1, table2, table3, result); proc sql; CREATE TABLE temp1 AS SELECT * FROM &table1. A JOIN &table2. B ON A.foo1 = B.foo1; quit; DATA temp2; SET temp1; IF foo2 > foo3 then foo5 = foo4*foo4; run; proc sql; CREATE TABLE &result. AS SELECT A.foo1, max(A.foo8), max(B.foo2), max(B.foo3), mean(B.foo5), max(C.foo7) FROM temp1 A JOIN temp2 B ON A.foo1 = B.foo1 JOIN &table3. C ON A.foo6 = C.foo6 GROUP BY foo1; quit; /* Etcaetera, d'autres opérations */ mend;
|
(J'ai mis des choses stupides dans mon exemple (genre au niveau de la récupération de foo8 à la dernière étape), j'en suis conscient, je veux juste illustrer qu'il y a des tables temporaires qui sont créées puis réutilisées plus loin dans la fonction, et que tout n'est pas agréable en une seule opération SQL quoi)
Ce qu'il se passe réellement au sein de la fonction est pas vraiment ma question, ma question est plutôt : j'ai plusieurs table qui sont manipulées, jointes en des tables temporaires, qui subissent des opérations, des groupages, etcaetera, pour en fin de fonction sortir plusieurs tables. Est-ce que c'est faisable en SQL d'avoir des tables temporaires créées et manipulées au sein d'une fonction ? Si oui, est-ce que vous auriez un template qui me permette de comprendre la syntaxe pour enchaîner les opérations comme c'est fait sous SAS svp ? Si non, quelles solutions ai-je pour faire ça ?
Et plus tard, il faudra que je fasse une fonction "capsule" qui appellera les unes après les autres mes autres fonctions, c'est faisable aussi ? Mêmes questions, du coup.
(J'espère que je suis clair)
Merci d'avance
NB : J'utilise pgAdmin III, que je découvre sur le tas
Edit 1 : question complétée (suite à une erreur d'envoi prématuré)
Message édité par saint malo le 17-03-2016 à 17:25:45