LesezeichenAbonnierenRSS-Feed abonnieren
Fay123
Obsidian | Level 7

Hallo!

 

Ich habe eine Tabelle, wo ich einerseits Felder summieren möchte, allerdings von einem Feld immer den ersten Wert übernehmen möchte.

Z.B.

Kunde    Preis   Limit

xyz         5          100

xyz         6          100

 

Resultat:

xyz       11         100

 

Gibt es eine Formel, die ich für den "ersten Wert" anwenden kann?

 

Wie immer vielen Dank für die Hilfe.

2 ANTWORTEN 2
mfab
Quartz | Level 8

Hallo Fay,

 

da gibt es mehrere Möglichkeiten...

eine wäre z.B. einfach mit einem SQL:

select
  kunde,
  sum(preis),
  limit
from xyz
group by kunde, limit;

Beste Grüße

Michael

 

CKothenschulte
Obsidian | Level 7

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;

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 1274 Aufrufe
  • 2 Kudos
  • 3 in Unterhaltung