Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
Contributor
Beiträge: 39
Letzter Stichtag

Mal wieder ein Problem mit SAS.

 

Ich habe eine Riesentabelle mit Datensätzen eines Kunden zu unterschiedlichen Stichtagen. Ich möchte jeweils den Datensatz mit dem jüngsten Stichtag auslesen. Gibt es eine Funktion, die mir das ermöglicht?

 

Vielen Dank im voraus! Frau (fröhlich)

Occasional Contributor
Beiträge: 6
Betreff: Letzter Stichtag

Hallo,

 

ich würde es wie folgt machen:

 

PROC SQL;
  CREATE TABLE ERGEBNIS AS
    SELECT A.*
    FROM QUELLE A INNER JOIN
     (SELECT KUNDENID, MAX(STICHTAG) AS STICHTAG
      FROM QUELLE
      GROUP BY KUNDENID) B 
     ON A.KUNDENID = B.KUNDENID AND A.STICHTAG=B.STICHTAG;
QUIT;

Je nachdem, ob ein DBMS oder die SAS Datenhaltung in BASE Files genutzt wird, kann es erforlich sein, den inneren SELECT in eine eigene, vorgeschaltete Abfrage auszulagern, um die Performance zu steigern.

 

 

Viele Grüße

Sebastian

Contributor
Beiträge: 38
Betreff: Letzter Stichtag
[ Bearbeitet ]

Hallo @Sebastian_R

 

warum der zusätzliche Join und kein Having?

Esteemed Advisor
Beiträge: 6.706
Betreff: Letzter Stichtag
proc sort data=vorhanden;
by kundenid stichtag;
run;

data erwuenscht;
set vorhanden;
by kundenid;
if last.kundenid;
run;

Die von mir bevorzugte DATA Step Methode.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Beiträge: 39
Betreff: Letzter Stichtag

Vielen Dank für die Vorschläge. Ich bin nicht der große Programmierer vor dem Herrn, ich versuche das alles im DIS mittels eines Extracts auf die Tabelle zu bewerkstelligen.

 

Habe es jetzt auch hingekriegt, allerdings mit einem Join.

 

Nochmals vielen lieben Dank!! Frau (fröhlich)

Frequent Contributor
Beiträge: 109
Betreff: Letzter Stichtag

Hallo @Fay123,

 

eventuell könntest Du hier auch mit einem "Rank" (inkl. entsprechendem by-statement) und einem anschließenden "Extract" (auf die entsprechenden Ranks) arbeiten.

Somit hättest Du auch wieder zwei Schritte, die aber ggf. im DI-Studio optisch leichter nachvollziehbar sind.

 

Ein weiterer Vorschlag - nicht zur Verwirrung, nur der Vollständig halber Smiley (zwinkernd)

 

Cheers, mfab

Contributor
Beiträge: 39
Betreff: Letzter Stichtag

Da war ich wohl etwas voreilig, ich bekomme zwar den jüngsten Stichtag, allerdings nur für die Datensätze die z.B. am 30.5. aktualisiert wurden. Datensätze mit anderen Aktualisierungsstichtagen fallen raus.

Frau (traurig) 

Contributor
Beiträge: 39
Betreff: Letzter Stichtag

Geschafft! Danke für die vielen Anregungen! Was täte ich ohne dieses Forum! Frau (fröhlich)