Ho trovato una domanda molto simile a questa, ma che utilizza funzionalità che sembrano esclusive di Oracle. Sto cercando di farlo in SQL Server.Recupera la riga con il valore Max per una colonna in SQL Server
Ho una tabella come questa:
MyTable
--------------------
MyTableID INT PK
UserID INT
Counter INT
Ogni utente può avere più righe, con diversi valori di Counter
in ogni fila. Devo trovare le righe con il valore più alto di Counter
per ciascun utente.
Come posso farlo in SQL Server 2005?
Il meglio che riesco a trovare è una query restituisce il MAX(Counter)
per ogni UserID
, ma ho bisogno dell'intera riga a causa di altri dati in questa tabella non mostrati nella mia definizione di tabella per semplicità.
EDIT: È giunto alla mia attenzione da alcune delle risposte in questo post, che ho dimenticato un dettaglio importante. È possibile avere più di 2 righe in cui un ID utente può avere lo stesso valore di contatore MAX. Esempio sotto aggiornato per quale dovrebbe essere il dato/output atteso.
Con questi dati:
MyTableID UserID Counter
--------- ------- --------
1 1 4
2 1 7
3 4 3
4 11 9
5 11 3
6 4 6
...
9 11 9
Voglio che questi risultati per i valori MAX duplicati, selezionare la prima occorrenza in qualsiasi ordine di SQL Server li seleziona. Quali righe vengono restituite non è importante in questo caso fino a quando l'UserID/coppie di contatore sono distinti:
MyTableID UserID Counter
--------- ------- --------
2 1 7
4 11 9
6 4 6
@marc_s: downsoter seriale: sei il terzo che ho visto, incluso me stesso. –
@OMGPonies: sì, immagino .... lo capisco su un pezzo supponente, o quando hai un errore evidente nel tuo post ...... anyhoo ..... –
@marc_s: +1: Ogni ora e poi succede nelle domande SQL. –