Dies sollte eine einfache Frage sein, aber ich kann es nicht zum Laufen bringen: (
Wie wählt man Zeilen, die den maximalen Spaltenwert haben, als Gruppe nach einer anderen Spalte?
Zum Beispiel
Ich habe die folgende Tabellendefinition:
%Vor% Das Problem ist jetzt, dass ich nach den Ergebnissen nach docgroupviewid
gruppieren möchte und dann eine Zeile aus jeder docgroupviewid
Gruppe auswähle, je nachdem, welche die höchste del_index
hat.
Ich habe es versucht
%Vor% Aber anstatt mich mit dem richtigen id
zurückzugeben, gibt es mich mit dem frühesten id
aus der Gruppe mit dem gleichen docgroupviewid
zurück.
Irgendwelche Ideen?
Ich habe selbst oft damit gekämpft und die Lösung besteht darin, anders über Ihre Anfrage nachzudenken.
Ich möchte jede DocGroupViewID Zeile, wo der Del_Index der höchste (max) für alle Zeilen mit dieser DocGroupViewID ist:
%Vor% Es wird komplexer, wenn mehr als eine Zeile die gleiche Del_Index
haben kann, da Sie dann eine Möglichkeit brauchen, um auszuwählen, welche angezeigt wird.
Sie können die Funktionen RANK()
oder ROW_NUMBER()
mit einem CTE verwenden, um mehr Kontrolle über die Ergebnisse zu erhalten, wie folgt:
Wenn Sie Verbindungen trennen können, fügen Sie sie einfach zu ORDER BY
hinzu.