Hallo @Fay123,
in dem Beispiel ist der SQL vermutlich die beste und schlankste Lösung.
Ich würde trotzdem noch gerne auf due Befehle BY und RETAIN im Data-Step hinweisen.
Mein Beispiel ist zwar deutlich länger als der SQL, bietet aber die Möglichkeit Einfluss zu nehmen, wenn zum Beispiel unterschiedliche Limits je Kunde vorkommen, der Kunde im Ergebnis aber nur einmal auftauchen soll.
data DATEN;
input KUNDE $3. PREIS 2. LIMIT 3.;
cards;
xyz 5 100
xyz 6 100
abc 3 110
abc 4 110
;
run;
proc sort data=DATEN;
by KUNDE;
run;
data ERGEBNIS (drop=LIMIT PREIS);
set DATEN;
by KUNDE;
/* Ergebnisvariablen über einen Satz hinweg speichern */
retain LIMIT_ERG;
retain PREIS_ERG;
/* Neuer Kunde */
if first.KUNDE then do;
LIMIT_ERG = LIMIT;
PREIS_ERG = 0;
end;
/* Preis summieren */
PREIS_ERG = sum(PREIS_ERG, PREIS);
/* Letzter Satz des Kunden, also Ausgabe */
if last.KUNDE then output;
run;