Obtener nombre con valor mas alto de una consulta de Sql Server

publicado por: Anonymous

Buen día.
Tengo una tabla en Sql Server que contiene Id, Nombre, Numero. Los nombres se pueden repetir pero cada uno tendrá un id único, necesito obtener los nombres que tengan el numero (Phone) mayor.

Adjunto imágenes para que sea mas claro.
introducir la descripción de la imagen aquí

esto es lo que necesito
introducir la descripción de la imagen aquí

Lo que necesito que sea mayor es la columna Phone y que se muestren las tres columnas.

Así me funciona, pero no me gusta nada la idea de comparar por el nombre.

SELECT C.ShipperId, C.Shippername, C.Phone
FROM (
  SELECT MAX(A.Phone) AS Phone, A.shippername
  FROM table A
  GROUP BY A.shippername) B
JOIN table C
ON B.phone = C.phone
and B.shippername = C.shippername

solución

El “window function” row_number() está precisamente diseñado para este tipo de situaciones:

select t.ShipperID, t.ShipperName, t.Phone
  from (select t.*,
               row_number() over (partition by t.ShipperName order by t.Phone desc) as rn
          from tbl t) t
 where t.rn = 1
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *