Hello everyone, I have a solution to my problem, but I would like something more efficient and quicker. I think you can understand on the picture what I want. I would like to associate two sets (blue and green) or more, to do the red one (it's simply to combination of the 2 sets with null data when there is no number). So this is my script SAS : /* creation of the set where i save the result */
proc sql ;
create table lib.montant_result as (
select id_dossier, 0 as montant_1, 0 as montant_2,0 as montant_3, 0 as montant_4,
0 as montant_5, 0 as montant_6,0 as montant_7, 0 as montant_8, 0 as montant_9
from lib.clients ;
quit ;
%Macro evolution_montant(YYMM) ;
/* creation of the blue and green sets */
proc sql ;
create table lib.montant_month as (
select id_dossier,
case when intck("month",date,"01jul2013") = 1 then montant end as montant_1,
case when intck("month",date,"01jul2013") = 2 then montant end as montant_2,
case when intck("month",date,"01jul2013") = 3 then montant end as montant_3,
case when intck("month",date,"01jul2013") = 4 then montant end as montant_4,
case when intck("month",date,"01jul2013") = 5 then montant end as montant_5,
case when intck("month",date,"01jul2013") = 6 then montant end as montant_6,
case when intck("month",date,"01jul2013") = 7 then montant end as montant_7,
case when intck("month",date,"01jul2013") = 8 then montant end as montant_8,
case when intck("month",date,"01jul2013") = 9 then montant end as montant_9,
FROM lib.clients clients
inner join lib.montant&YYMM. mont on mont.id_dossier = clients.id_dossier );
quit ;
/*creation and update of the red set (result) */
proc sql ;
UPDATE lib.montant_result a
SET montant_1 = sum(a.montant_1 ,(SELECT b.montant_1 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_2 = sum(a.montant_2 ,(SELECT b.montant_2 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )) ,
montant_3 = sum(a.montant_3 ,(SELECT b.montant_3 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )) ,
montant_4 = sum(a.montant_4 ,(SELECT b.montant_4 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_5 = sum(a.montant_5 ,(SELECT b.montant_5 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_6 = sum(a.montant_6 ,(SELECT b.montant_6 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_7 = sum(a.montant_7 ,(SELECT b.montant_7 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_8 = sum(a.montant_8 ,(SELECT b.montant_8 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier )),
montant_9 = sum(a.montant_9 ,(SELECT b.montant_9 FROM alison.montant_month b WHERE a.id_dossier = b.id_dossier ))
;
quit ;
%mend evolution_montant; Thank you in advance. And sorry for my poor english ! Have a good weekend !
... View more