Holen Sie die Zeile, die hat den Max-Wert für eine Spalte in SQL Server

Fand ich eine Frage, die war sehr ähnlich wie diese, aber mit features, die scheinen exklusiv für Oracle. Ich bin auf der Suche um dies zu tun, die in SQL Server.

Ich habe eine Tabelle wie diese:

MyTable
--------------------
MyTableID  INT  PK
UserID     INT
Counter    INT

Jeder Benutzer kann über mehrere Zeilen mit unterschiedlichen Werten für Counter in jeder Zeile. Ich muss die Zeilen mit der höchsten Counter Wert für jeden Benutzer.

Wie kann ich dies in SQL Server 2005?

Die besten, die ich mit oben kommen kann ist eine Abfrage der gibt die MAX(Counter) für jeden UserID, aber ich brauche die gesamte Zeile, weil Sie andere Daten in dieser Tabelle nicht angezeigt in meiner Tabelle definition für Einfachheit.

EDIT: Es ist gekommen, um meine Aufmerksamkeit von einigen der Antworten in diesem post, dass ich vergaß ein wichtiges detail. Es ist möglich, 2+ Zeilen, in denen Sie eine Benutzerkennung haben, können die gleichen MAX-Zähler-Wert. Beispiel unten aktualisiert, was die erwarteten Daten - /Ausgabe sein sollte.

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

Möchte ich diese Ergebnisse für den doppelten MAX-Werte, wählen Sie den ersten Vorkommnis in der Reihenfolge der SQL-server wählt Sie. Welche Zeilen zurückgegeben werden, sind nicht wichtig in diesem Fall, solange die UserID - /Zähler-Paare sind Verschieden:

MyTableID   UserID    Counter
---------   -------   --------
2           1         7
4           11        9
6           4         6
InformationsquelleAutor Dan Herbert | 2010-01-19
Schreibe einen Kommentar