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
| DATA table;
input variable2 variable$ calcul mois$;
cards;
0 J0 2 x
0 J4 2 x
0 J7 2 x
0 J14 2 x
0 J21 2 x
0 J28 2 x
0 J42 2 x
0 J56 2 x
1 J7 6 x
1 J14 6 x
1 J0 6 x
1 J21 6 x
1 J56 6 x
2 J0 6 x
2 J7 6 x
2 J14 6 x
2 J42 6 x
;
run;
proc sql noprint;
create table table3 as
select table_N_.variable2, table_N_.variableunique,
table_N_._N_-first_N_+1 as calcul,
CASE WHEN table_N_._N_=last_N_ then "janvier" ELSE mois END as mois
from
(select monotonic() as _N_, variable2, variableunique, calcul, mois from table) table_N_
left join
(select table_N_.variable2,
table_N_._N_, table_first_N_.first_N_
from
(select monotonic() as _N_, variable2, calcul, mois from table) table_N_
left join
(select min(_N_) as first_N_, max(_N_) as last_N_, variable2
from
(select monotonic() as _N_, variable2, calcul, mois from table) table_N_
group by variable2) table_first_N_
on (table_N_.variable2=table_first_N_.variable2)
) as table_N_et_first
on (table_N_.variable2=table_N_et_first.variable2
and table_N_._N_=table_N_et_first._N_
)
;
quit; |
Partager