Encontré una pregunta que era muy similar a esta, pero que utilizaba características que parecen exclusivas de Oracle. Estoy buscando hacer esto en SQL Server.Obtener la fila que tiene el valor Máx. Para una columna en SQL Server
tengo una tabla como la siguiente:
MyTable
--------------------
MyTableID INT PK
UserID INT
Counter INT
Cada usuario puede tener múltiples filas, con diferentes valores para Counter
en cada fila. Necesito encontrar las filas con el valor más alto Counter
para cada usuario.
¿Cómo puedo hacer esto en SQL Server 2005?
Lo mejor que se me ocurre es una consulta devuelve el MAX(Counter)
para cada UserID
, pero necesito toda la fila debido a otros datos en esta tabla que no se muestran en la definición de mi tabla por simplicidad.
EDIT: Algunas de las respuestas en esta publicación me han llamado la atención, me olvidé de un detalle importante. Es posible tener más de 2 filas donde un ID de usuario puede tener el mismo valor de contador MAX. Ejemplo a continuación actualizado para saber cuál será el dato/resultado esperado.
Con estos datos:
MyTableID UserID Counter
--------- ------- --------
1 1 4
2 1 7
3 4 3
4 11 9
5 11 3
6 4 6
...
9 11 9
Quiero que estos resultados para los valores máximo duplicados, seleccionar la primera aparición en el orden del servidor SQL los selecciona. Las filas que se devuelven no es importante en este caso, siempre que el ID de usuario/Contador pares son distintos:
MyTableID UserID Counter
--------- ------- --------
2 1 7
4 11 9
6 4 6
@marc_s: Voto en serie: eres el tercero que he visto, incluido yo mismo. –
@OMGPonies: sí, supongo ... Lo entiendo en una pieza obstinada, o cuando tienes un error flagrante en tu publicación ...... de todos modos ... –
@marc_s: +1: Every de vez en cuando sucede en preguntas de SQL. –