Wählen Sie Zeilen mit der maximalen Spaltenwertgruppe nach einer anderen Spalte aus

8

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?

    
Graviton 15.09.2009, 05:18
quelle

2 Antworten

9

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.

EDIT: wollte mit einer anderen Option weitermachen

Sie können die Funktionen RANK() oder ROW_NUMBER() mit einem CTE verwenden, um mehr Kontrolle über die Ergebnisse zu erhalten, wie folgt:

%Vor%

Wenn Sie Verbindungen trennen können, fügen Sie sie einfach zu ORDER BY hinzu.

    
Timothy Walters 15.09.2009, 05:40
quelle
3

Sie müssen Ihre Anfrage ein wenig komplizieren:

%Vor%     
Alterlife 15.09.2009 05:24
quelle

Tags und Links