Ich muss eine Abfrage erstellen, die Datensätze basierend auf mehreren Maximalwerten in einer Gruppe in einer bestimmten Hierarchie ziehen wird. Ich habe eine Tabelle, die wie folgt aussieht:Erstellen einer Abfrage zum Auswählen eines Datensatzes basierend auf einer Hierarchie - PROC SQL
Key Classificaiton set_ind Date Rank Amount
1 1 1 5/2/2017 1 15
2 1 1 5/2/2017 3 2
3 1 0 4/2/2017 2 32
4 2 1 5/1/2017 2 5
5 2 1 1/5/2017 4 16
6 2 1 12/13/2016 1 12
7 2 0 12/13/2016 3 20
8 3 1 4/5/2017 2 15
9 3 0 4/8/2017 1 23
ich für jeden Datensatz muss in die Lage zu bekommen den Schlüssel, der eine set_ind hat = 1, das jüngste Datum und den höchsten Rang in dieser Reihenfolge der Hierarchie für jede Klassifizierung.
So aus dem Probentisch, würde die Abfrage des Datensatzes entsprechend der Taste 2, ziehen Sie 4 und 8.
Ich habe versucht, diesen Code verwenden:
proc sql;
create table test as
select key, classification, max(date), max(rank)
from ods.data
where set_ind = 1
group by 2, 1;
quit;
Ich weiß, ich bin immer noch Da ich den Schlüssel in der Abfrage habe, benötige ich den Schlüssel, um den spezifischen Datensatz identifizieren zu können.
Ich habe auch versucht, zwei Abfragen auszuführen, eine maximale (Datum) zu finden und dann eine richtige Verbindung zu einer anderen Abfrage zu finden, um max (Rang) zu finden, aber das hat auch nicht funktioniert.
Für beide Abfragen haben die Daten, die ich brauche keine Dups in der Spalte Klassifizierung und wird einen Schlüssel haben, um mit jedem Datensatz zu gehen. Wenn ich den oben genannten Code ausführe, bekomme ich einen Tipp. Ich bin mir nicht sicher, wie ich die Daten richtig ziehen soll.
So für die Klassifizierung 2: Sie den Schlüssel als 4 gewählt basierend auf max (Datum) aber nicht den höchsten Rang haben. Sie wollen also das höchste Datum für jede Klassifizierung und ihren CORRESPONDING-Rang? –
@ G.Arima Nicht ganz. Stellen Sie sich jede Klassifizierung als Set vor. Innerhalb jeder Klassifikation habe ich ein Datum. Ich mache eine Teilmenge des höchsten Datums aus jeder Klassifizierung. Wenn es mehrere Datensätze mit dem höchsten Datum gibt, wähle ich den höchsten Rang aus dieser Teilmenge der höchsten Daten für die Klassifikationen. Ich hoffe das ergibt Sinn. – Jarom
Ja, es ist perfekt. Ich habe die Abfrage nur auf diese Logik beantwortet. :) –