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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388
|
/*options mprint mlogic symbolgen;*/
rsubmit;
options nodate nocenter nonumber nolabel validvarname=upcase compress=yes formdlim = '-';
libname l "~/Gestpat/";
libname m "~/Gestpat/Agences";
endrsubmit;
libname l slibref=l server=unixgan;
libname m slibref=m server=unixgan;
%macro liste_cli(agent);
%syslput agent = &agent.;
rsubmit;
%macro etape1;
/* Nombre de clients eligibles */
data m.agence_&agent.;
set l.idgrc_00_total(where=(code_icx="&agent."));
run;
/* Sur quels criteres ont ete selectionne les clients */
title "Agence &agent."
proc freq data=m.agence_&agent. order=data;
tables type_prod / missing;
run;
title;
/* Recuperer les infos demandees par Maryline */
proc sort data=m.agence_&agent.(keep=idgrc) nodupkeys out=idgrc; by idgrc; run;
proc sql;
create table agence_&agent._cli as
select a.idgrc,
a.tit_sj,
a.nom_rs,
a.prenom,
case
when a.ancien =. then .
else datepart(a.ancien)
end as anciennete format date9.,
case
when a.dt_nais in(.,'01jan1951:00:00:00'dt) then .
else datepart(a.dt_nais)
end as dt_nais format date9.,
b.idtypv,
b.batesc,
b.lieud,
b.codpost,
b.ville,
a.nbrsksan as nb_contrats_sante,
(a.nbcntia-a.nbrsksan) as nb_contrats_iard,
a.ttcntprv as nb_contrats_vie
from grc.per a, grc.adr b
where a.idgrc in (select* from idgrc)
and a.idgrc = b.idgrc
and b.princip='Y'
order by idgrc;
quit;
/* Récupération des infos par critère */
data epargne_hdg pa_retraite ass_empr mrh_hdg chateau_luxe bateau cheval bijou multi_vehic multi_pno
pharma chef_ent auto_luxe collectives;
set m.agence_&agent.;
if type_prod = "EPARGNE HDG" then output epargne_hdg;
else if type_prod = "PA RETRAITE HDG" then output pa_retraite;
else if type_prod = "ASSURANCE EMPRUNTEUR" then output ass_empr;
else if type_prod = "MRH HAUT DE GAMME" then output mrh_hdg;
else if type_prod = "CHATEAU_LUXE" then output chateau_luxe;
else if type_prod = "BATEAU" then output bateau;
else if type_prod = "CHEVAL" then output cheval;
else if type_prod = "BIJOUX/FOURRURES" then output bijou;
else if type_prod = "MULTI-VEHICULE" then output multi_vehic;
else if type_prod = "MULTI-PNO" then output multi_pno;
else if type_prod = "PHARMA" then output pharma;
else if type_prod = "CHEF D'ENTREPRISE + DE 50 ANS"
then output chef_ent;
else if type_prod = "AUTO LUXE" then output auto_luxe;
else if type_prod = "COLLECTIVES" then output collectives;
run;
/* EPARGNE HAUT DE GAMME*/
proc sql noprint; select count(*) into :nomb from epargne_hdg; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data epargne_hdg;
set epargne_hdg (keep=idgrc mtcntec) nobs=n;
crit_epargne=1;
run;
%end;
%if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete epargne_hdg; quit; %end;
/* PA EN RETRAITE */
proc sql noprint; select count(*) into :nomb from pa_retraite; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data pa_retraite;
set pa_retraite (keep=idgrc mtcntret);
crit_retraite=1;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete pa_retraite; quit; %end;
/* ASSURANCE EMPRUNTEUR */
proc sql noprint; select count(*) into :nomb from ass_empr; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data ass_empr;
set ass_empr (keep=idgrc mt_cap_dce);
crit_ass_empr=1;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete ass_empr; quit; %end;
/* MRH HAUT DE GAMME */
proc sql noprint; select count(*) into :nomb from mrh_hdg; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data mrh_hdg;
set mrh_hdg (keep=idgrc cdpo mnaca);
crit_mrh_hdg=1;
rename cdpo=cpg_mrh mnaca=prime_mrh;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete mrh_hdg; quit; %end;
/* CHATEAU-LUXE */
proc sql noprint; select count(*) into :nomb from chateau_luxe; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data chateau_luxe;
set chateau_luxe (keep=idgrc cdpo09 mnaca);
crit_chateau_luxe=1;
rename cdpo09=cpt_chateau_luxe mnaca=prime_chateau_luxe;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete chateau_luxe; quit; %end;
/* BATEAU */
proc sql noprint; select count(*) into :nomb from bateau; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data bateau;
set bateau (keep=idgrc cdpo mnaca valeur_venale_bateau longueur_bateau);
crit_bateau=1;
rename cdpo=cpg_bateau mnaca=prime_bateau;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete bateau; quit; %end;
/* CHEVAL */
proc sql noprint; select count(*) into :nomb from cheval; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data cheval;
set cheval (keep=idgrc cdpo mnaca);
crit_cheval=1;
rename cdpo=cpg_cheval mnaca=prime_cheval;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete cheval; quit; %end;
/* BIJOU-FOURRURES */
proc sql noprint; select count(*) into :nomb from bijou; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data bijou;
set bijou (keep=idgrc cdpo mnaca);
crit_bijou_fourrure=1;
rename cdpo=cpg_bijou mnaca=prime_bijou;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete bijou; quit; %end;
/* MULTI-VEHIC */
proc sql noprint; select count(*) into :nomb from multi_vehic; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data multi_vehic;
set multi_vehic (keep = idgrc nb_contrat mnaca_total);
rename nb_contrat=nb_vehic mnaca_total=prime_vehic_totale;
crit_multi_vehic=1;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete multi_vehic; quit; %end;
/* MULTI-PNO */
proc sql noprint; select count(*) into :nomb from multi_pno; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data multi_pno;
set multi_pno (keep=idgrc nb_contrat mnaca_total);
crit_multi_pno=1;
rename nb_contrat=nb_pno mnaca_total=prime_pno_totale;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete multi_pno; quit; %end;
/* PHARMA */
proc sql noprint; select count(*) into :nomb from pharma; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data pharma;
set pharma (keep=idgrc cdpo mnaca);
crit_pharma=1;
rename cdpo=cpg_pharma mnaca=prime_pharma;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete pharma; quit; %end;
/* CHEFS D ENTREPRISE */
proc sql noprint; select count(*) into :nomb from chef_ent; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data chef_ent;
set chef_ent (keep=idgrc csp_pri pcs_pri libactpr role catfoyer);
crit_chef_ent=1;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete chef_ent; quit; %end;
/* AUTO DE LUXE */
proc sql noprint; select count(*) into :nomb from auto_luxe; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data auto_luxe;
set auto_luxe (keep=idgrc cdpo marque_vehic modele_vehic groupe_vehic classe_vehic valeur_vehic);
crit_auto_luxe=1;
rename cdpo=cpg_luxe;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete auto_luxe; quit; %end;
/* COLLECTIVES */
proc sql noprint; select count(*) into :nomb from collectives; quit;
/*%put &nomb;*/
%if %eval(1*&nomb) NE 0 %then %do;
data collectives;
set collectives (keep=idgrc no_siret raisoca raisocb nbcontrat scont dateff reg tetco montantg
ass1 taux1 salaire1 ass2 taux2 salaire2 ass3 taux3 salaire3 sal_moy_tet);
crit_collectives=1;
run;
%end;
%else %if %eval(1*&nomb) EQ 0 %then %do; proc datasets nolist; delete collectives; quit; %end;
/* Rassemblement de toutes les infos */
data m.agence_&agent.;
merge agence_&agent._cli
%if %sysfunc(exist(epargne_hdg)) %then %do ; epargne_hdg %end;
%if %sysfunc(exist(pa_retraite)) %then %do ; pa_retraite %end;
%if %sysfunc(exist(ass_empr)) %then %do ; ass_empr %end;
%if %sysfunc(exist(mrh_hdg)) %then %do ; mrh_hdg %end;
%if %sysfunc(exist(chateau_luxe)) %then %do; chateau_luxe %end;
%if %sysfunc(exist(bateau)) %then %do ; bateau %end;
%if %sysfunc(exist(cheval)) %then %do ; cheval %end;
%if %sysfunc(exist(bijou)) %then %do ; bijou %end;
%if %sysfunc(exist(multi_vehic)) %then %do ; multi_vehic %end;
%if %sysfunc(exist(multi_pno)) %then %do ; multi_pno %end;
%if %sysfunc(exist(pharma)) %then %do ; pharma %end;
%if %sysfunc(exist(chef_ent)) %then %do ; chef_ent %end;
%if %sysfunc(exist(auto_luxe)) %then %do ; auto_luxe %end;
%if %sysfunc(exist(collectives)) %then %do ; collectives %end;
;
by idgrc;
%if %sysfunc(exist(epargne_hdg)) %then %do;
if crit_epargne NE 1 then crit_epargne=0;
%end;
%if %sysfunc(exist(pa_retraite)) %then %do;
if crit_retraite NE 1 then crit_retraite=0;
%end;
%if %sysfunc(exist(ass_empr)) %then %do;
if crit_ass_empr NE 1 then crit_ass_empr=0;
%end;
%if %sysfunc(exist(mrh_hdg)) %then %do;
if crit_mrh_hdg NE 1 then crit_mrh_hdg=0;
%end;
%if %sysfunc(exist(chateau_luxe)) %then %do;
if crit_chateau_luxe NE 1 then crit_chateau_luxe=0;
%end;
%if %sysfunc(exist(bateau)) %then %do;
if crit_bateau NE 1 then crit_bateau=0;
%end;
%if %sysfunc(exist(cheval)) %then %do;
if crit_cheval NE 1 then crit_cheval=0;
%end;
%if %sysfunc(exist(bijou)) %then %do;
if crit_bijou_fourrure NE 1 then crit_bijou_fourrure=0;
%end;
%if %sysfunc(exist(multi_vehic)) %then %do;
if crit_multi_vehic NE 1 then crit_multi_vehic=0;
%end;
%if %sysfunc(exist(multi_pno)) %then %do;
if crit_multi_pno NE 1 then crit_multi_pno=0;
%end;
%if %sysfunc(exist(pharma)) %then %do;
if crit_pharma NE 1 then crit_pharma=0;
%end;
%if %sysfunc(exist(chef_ent)) %then %do;
if crit_chef_ent NE 1 then crit_chef_ent=0;
%end;
%if %sysfunc(exist(auto_luxe)) %then %do;
if crit_auto_luxe NE 1 then crit_auto_luxe=0;
%end;
%if %sysfunc(exist(collectives)) %then %do;
if crit_collectives NE 1 then crit_collectives=0;
%end;
run;
/* Arrangement du tableau de résultats */
proc sql;
create table m.agence_&agent. as select
idgrc, tit_sj, nom_rs, prenom, anciennete, dt_nais, idtypv, batesc, lieud, codpost, ville,
nb_contrats_sante, nb_contrats_iard, nb_contrats_vie
%if %sysfunc(exist(epargne_hdg)) %then %do; ,crit_epargne %end;
%if %sysfunc(exist(pa_retraite)) %then %do; ,crit_retraite %end;
%if %sysfunc(exist(ass_empr)) %then %do; ,crit_ass_empr %end;
%if %sysfunc(exist(mrh_hdg)) %then %do; ,crit_mrh_hdg %end;
%if %sysfunc(exist(chateau_luxe)) %then %do; ,crit_chateau_luxe %end;
%if %sysfunc(exist(bateau)) %then %do; ,crit_bateau %end;
%if %sysfunc(exist(cheval)) %then %do; ,crit_cheval %end;
%if %sysfunc(exist(bijou)) %then %do; ,crit_bijou_fourrure %end;
%if %sysfunc(exist(multi_vehic)) %then %do; ,crit_multi_vehic %end;
%if %sysfunc(exist(multi_pno)) %then %do; ,crit_multi_pno %end;
%if %sysfunc(exist(pharma)) %then %do; ,crit_pharma %end;
%if %sysfunc(exist(chef_ent)) %then %do; ,crit_chef_ent %end;
%if %sysfunc(exist(auto_luxe)) %then %do; ,crit_auto_luxe %end;
%if %sysfunc(exist(collectives)) %then %do; ,crit_collectives %end;
%if %sysfunc(exist(epargne_hdg)) %then %do;
,mtcntec
%end;
%if %sysfunc(exist(pa_retraite)) %then %do;
,mtcntret
%end;
%if %sysfunc(exist(ass_empr)) %then %do;
,mt_cap_dce
%end;
%if %sysfunc(exist(mrh_hdg)) %then %do;
,cpg_mrh, prime_mrh
%end;
%if %sysfunc(exist(chateau_luxe)) %then %do;
,cpt_chateau_luxe, prime_chateau_luxe
%end;
%if %sysfunc(exist(bateau)) %then %do;
,cpg_bateau, prime_bateau, valeur_venale_bateau, longueur_bateau
%end;
%if %sysfunc(exist(cheval)) %then %do;
,cpg_cheval, prime_cheval
%end;
%if %sysfunc(exist(bijou)) %then %do;
,cpg_bijou, prime_bijou
%end;
%if %sysfunc(exist(multi_vehic)) %then %do;
,nb_vehic, prime_vehic_totale
%end;
%if %sysfunc(exist(multi_pno)) %then %do;
,nb_pno, prime_pno_totale
%end;
%if %sysfunc(exist(pharma)) %then %do;
,cpg_pharma, prime_pharma
%end;
%if %sysfunc(exist(chef_ent)) %then %do;
,csp_pri, pcs_pri, libactpr, role, catfoyer
%end;
%if %sysfunc(exist(auto_luxe)) %then %do;
,cpg_luxe, marque_vehic, modele_vehic, groupe_vehic, classe_vehic, valeur_vehic
%end;
%if %sysfunc(exist(collectives)) %then %do;
,no_siret, raisoca, raisocb, nbcontrat, scont, dateff, reg, tetco, montantg, ass1, taux1, salaire1, ass2,
taux2, salaire2, ass3, taux3, salaire3, sal_moy_tet
%end;
from m.agence_&agent.;
quit;
%mend etape1;
endrsubmit;
%macro etape2;
proc export data=m.agence_&agent.
outfile= "&rep.\Liste des clients.xls" dbms=excel replace;
sheet="Agence &agent.";
run;
%mend etape2;
rsubmit;
%etape1;
endrsubmit;
%etape2;
%mend liste_cli; |
Partager