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: 42
Having im Enterprise Guide

Hallo!

 

Ich habe eine Tabelle mit verschiedenen Snapshots für einen Kunden. Ich brauche immer den letzten Snapshot und wollte das mit einem Having lösen.

Allerdings weiss ich nicht wo bei der Abfrage im Enterprise Guide. Im Data Integrations Studio klappt's, kenne mich mit dem EG nicht so gut aus

Kann mir jemand helfen?

Super User
Beiträge: 7.431
Betreff: Having im Enterprise Guide

Hi!

 

Dieser Blog-Eintrag von Chris Hemedinger könnte Dich zur Lösung führen.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Beiträge: 42
Betreff: Having im Enterprise Guide

Danke, mir ist allerdings schon nicht klar, wie ich das Having in die Abfrage reinklicken kann - EG für Dummies sozusagen

Super User
Beiträge: 7.431
Betreff: Having im Enterprise Guide

HAVING bracuht man nur, wenn man mit Summationsfunktionen arbeitet. Sobald man eine damit erzeugte Spalte im Select hat, bietet der Abfrage-Assistent im "Daten filtern" die Option "Zusammengefasste Daten filtern" an.

zB

ich beginne mit SASHELP.CLASS, und ziehe Name und Age in "Daten auswählen". Dann wähle ich MAX als Zusammenfassung für Age, worauf ich MAX_of_Age als Spaltenname erhalte.

Jetzt kann ich in "Daten filtern" die genannte Option nutzen, MAX_of_Age dort hineinziehen, und im Pop-Up statt einem Wert (Drop-Down benutzen) die Spalte t1.Age zum Vergleich heranziehen.

Danach noch im "Daten auswählen" das "Gruppen automatisch auswählen" wegklicken und t1.Sex als Gruppe verwenden, und man bekommt diesen Code:

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_CLASS AS 
   SELECT t1.Name, 
          /* MAX_of_Age */
            (MAX(t1.Age)) AS MAX_of_Age
      FROM SASHELP.CLASS t1
      GROUP BY t1.Sex
      HAVING (CALCULATED MAX_of_Age) = t1.Age;
QUIT;

Das Ergebnis sieht dann so aus:

           MAX_
 Name     of_Age

Mary        15  
Janet       15  
Philip      16  
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Beiträge: 42
Betreff: Having im Enterprise Guide

Vielen Dank, ich probiere es mal aus.