Merci pour votre réponse. J’ai maintenant un souci d’interaction entre la macro, SQL, SAS et oracle. Pourriez-vous m’aider à corriger le code suivant ?
Merci !
%macro audio(annee,mois_deb,nb_mois);
%do i = 1 %to &nb_mois;
%if &i<10 %then %let i=0&i.;
%else %let i = &i.;
%let val=%eval(&i);
PROC SQL;
%connectora;
create table tab_&annee._&val as (select * from connection to oracle(
SELECT t2.TIP_PRS_IDE,
t1.EXE_SOI_DTD,
t1.BEN_NIR_PSA,
t1.BEN_RNG_GEM,
t1.BEN_CMU_TOP
FROM ER_PRS_F t1, ER_TIP_F t2
WHERE t1.DCT_ORD_NUM = t2.DCT_ORD_NUM
AND t1.FLX_DIS_DTD = t2.FLX_DIS_DTD
AND t1.FLX_EMT_NUM = t2.FLX_EMT_NUM
AND t1.FLX_EMT_ORD = t2.FLX_EMT_ORD
AND t1.FLX_EMT_TYP = t2.FLX_EMT_TYP
AND t1.FLX_TRT_DTD = t2.FLX_TRT_DTD
AND t1.ORG_CLE_NUM = t2.ORG_CLE_NUM
AND t1.PRS_ORD_NUM = t2.PRS_ORD_NUM
AND t1.REM_TYP_AFF = t2.REM_TYP_AFF
AND t1.EXE_SOI_DTD >= TO_DATE (&annee.0101, ‹ YYYYMMDD ›)
AND t1.FLX_DIS_DTD = add_months(to_date(&annee.&mois_deb.01,‹ YYYYMMDD ›),&i)
AND t2.TIP_PRS_IDE IN (…)));
disconnect from oracle;
QUIT;
%END;
data tab_&annee.;
set %do i = 1 %to %eval(&nb_mois);
%if &i<10 %then %let i=0&i.;
%else %let i = &i.;
%let val=%eval(&i);
tab_&annee._&val;
%end;
run;
proc append
base=table_tot
data=table_&annee.;
run;
%mend audio;
%AUDIO(2013,1,12);
%AUDIO(2014,1,12);
%AUDIO(2015,1,12);
%AUDIO(2016,1,12);
%AUDIO(2017,1,12);
%AUDIO(2018,1,12);
%AUDIO(2019,1,12);
%AUDIO(2020,1,12);
%AUDIO(2021,1,12);