Ich fand eine Frage, die dieser sehr ähnlich war, aber mit Funktionen, die nur für Oracle scheinen. Ich möchte dies in SQL Server tun.Holen Sie die Zeile mit dem Max-Wert für eine Spalte in SQL Server
Ich habe eine Tabelle wie folgt aus:
MyTable
--------------------
MyTableID INT PK
UserID INT
Counter INT
Jeder Benutzer mehrere Zeilen haben kann, mit unterschiedlichen Werten für Counter
in jeder Reihe. Ich muss die Zeilen mit dem höchsten Counter
Wert für jeden Benutzer finden.
Wie kann ich dies in SQL Server 2005 tun?
Das beste, was ich kann, ist eine Abfrage gibt die MAX(Counter)
für jede UserID
, aber ich brauche die gesamte Zeile wegen der anderen Daten in dieser Tabelle nicht in meiner Tabelle Definition der Einfachheit halber gezeigt.
EDIT: Es ist mir durch einige der Antworten in diesem Beitrag, dass ich ein wichtiges Detail vergessen habe, auf mich aufmerksam geworden. Es ist möglich, 2 + Zeilen zu haben, in denen eine Benutzer-ID denselben MAX-Zählerwert haben kann. Beispiel unten aktualisiert für was die erwarteten Daten/Ausgaben sein sollten.
Mit diesen Daten:
MyTableID UserID Counter
--------- ------- --------
1 1 4
2 1 7
3 4 3
4 11 9
5 11 3
6 4 6
...
9 11 9
Ich mag diese Ergebnisse für den doppelten MAX-Wert, in das erste Auftreten wählen, was auch immer, um SQL Server sie auswählt. Welche Zeilen zurückgegeben werden, ist nicht wichtig, in diesem Fall, solange der Benutzer-ID/Zähler-Paare sind verschieden:
MyTableID UserID Counter
--------- ------- --------
2 1 7
4 11 9
6 4 6
@marc_s: Serien-Downvoter - du bist der Dritte, den ich gesehen habe, einschließlich mir. –
@OMGPonies: yeah, ich denke ... Ich verstehe es auf einem eigensinnigen Stück, oder wenn Sie einen eklatanten Fehler in Ihrem Beitrag haben ...... Anyhoo ..... –
@marc_s: +1: Every jetzt & dann passiert es in SQL-Fragen. –