Bonjour,
J'ai un énorme problème. En effet j'ai une table SAS qui se présente sous la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
data person;
 infile datalines delimiter=','; 
 input CREANCE $14. POND REPOR RISK $ COUNTRY$;
 datalines; 
20241514156EUR,272186, 136093,ART122, FR
20241514156EUR,272186, 136093,ART122, NO
20085273456EUR,341928, 65688,ART126-b, FR
20085273456EUR,341928, 170964,ART126-a, FR
;
Le but est d'obtenir en sortie la table ci-dessous:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
data person1;
 infile datalines delimiter=','; 
 input CREANCE $14. POND REPOR RISK $ COUNTRY$;
 datalines; 
20241514156EUR,272186, 136093, ART122-ART122,FR-NO
20085273456EUR,341928, 236652, ART126-b-ART126-a,FR-FR
;
Les règles de gestion est la suivante:
*Pour les deux lignes ci-dessous, la colonne 1 a des données identiqus ainsi que la colonne 4. Comme la colonne 5 a des valeurs differentes alors nous aurons en retour 20241514156EUR,272186, 136093, ART122-ART122,FR-NO


20241514156EUR,272186, 136093,ART122, FR
20241514156EUR,272186, 136093,ART122, NO

* Pour les lignes ci-dessous , on somme les montants de la troisième colonne car la colonne 4 a des données differentes et la colonne 5 des données identiques.

20085273456EUR,341928, 65688,ART126-b, FR
20085273456EUR,341928, 170964,ART126-a, FR


J'ai donc essayé ce code mais hélas les données ne sont pas sommées pour le second cas.
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
 
data person1;
set person (rename=(risk=_risk country=_country repor=_repor));
by creance notsorted;
retain
  repor
  risk
  country
;
length
  risk $100
  country $20
;
if first.creance
then do;
  repor = _repor;
  risk = _risk;
  country = _country;
end;
else do;
  repor = repor + _repor
  risk = catx('-',risk,_risk);
  country = catx('-',country,_country);
end;
if last.creance then output;
drop _risk _country repor;
run;
Merci d'avance pour votre aide.