Bonjour,
Je rencontre un problème un peu bête, mais je coince vraiment....
Globalement, je veux juste faire une boucle à l'intérieur d'un data-set, voici le code (j'ai raccourci les valeurs prises et les nombreux sql derrière pour rester lisible)
Jusque là, ça va. j'ai bien au final 3 tables, distinguées par la valeur du &numtie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 %let DateD=08/04/2009; DATA sasuser.numtie_ffm; format numtie 7. Partenaire $20. idn 2.; input numtie Partenaire idn; cards; 1979800 Tata 1 186290 Titi 2 572441 Toto 3 ; run; Proc sql noprint; select max(idn) into:nmax from sasuser.numtie_ffm; Quit; %macro boucle; %do i=1 %to &nmax; Data _NULL_; set sasuser.numtie_ffm(where=(idn=&i)); CALL SYMPUT("numtie",COMPRESS(numtie)); CALL SYMPUT("part",COMPRESS(Partenaire)); RUN; %orasql( create table sasuser.temp_hst_etd_&numtie. as select a.IDFDOS, a.DATETD, a.IDFINTAGTPTN, a.CODAGNPTN, a.NUMDOSPTN, a.IDFOFRCMC, b.SMNCLD as SMNCLDETD FROM dwh.tf_hstetdoct_j a, dwh.td_tps b where a.CODETACTR='P' and trunc(a.DATETD) >= TO_DATE('&DateD','DD/MM/YYYY') and a.NUMTIE in (select NUMTIE002 from dwh.td_tieptn_j where NUMTIE002=&Numtie) AND trunc(a.datetd)=trunc(b.jou) ); %end; %mend; %boucle;
Mon soucis ensuite est simplement de rassembler ces tables dans une seule.
je pensais donc à quelquechose comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 %macro group; %do i=1 %to &nmax; Data _NULL_; set sasuser.numtie_ffm(where=(idn=&i)); CALL SYMPUT("numtie",COMPRESS(numtie)); CALL SYMPUT("part",COMPRESS(Partenaire)); RUN; data sasuser.global_etude; %do i=1 %to &nmax; set sasuser.temp_hst_etd_&numtie. %end; ; by IDFDOS; RUN; %mend; %group;
Mais là, ça coince...
Ca doit être bête comme choux, mais impossible d'y arriver.
Quelqu'un peut m'aider ?
Merci d'avance.
Cdt,
Partager