2009-09-21 10 views
1

Je cette requête qui renvoie toutes les lignes d'une table:lignes Récupération avec la plus haute valeur

select Cost, Name, Id 
from #Table 

Il retourne un jeu de résultats qui ressemble à ceci:

Cost Name Id 
---- ---- ---- 
-2.00 Item1 1 
4.00 Item2 1 
6.00 Item3 1 
3.00 Item1 2 
9.00 Item4 2 

Ce que je veux faire est saisir une rangée à partir de chaque ID avec la valeur la plus élevée, de sorte que les 5 résultats deviennent deux résultats:

Cost Name Id 
---- ---- ---- 
6.00 Item3 1 
9.00 Item4 2 

6,00 est le coût le plus élevé f de l'Id de 1, et 9.00 est le coût le plus élevé de l'Id de 2.

Comment est-ce que je changerais la requête pour faire ceci?

Répondre

11
select id, max(cost) MaxCost FROM #Table group by ID 

pour obtenir le nom de l'élément, vous devez rejoindre le résultat de ce à l'original, mais rappelez-vous, qu'il pourrait y avoir plus de 1 ensemble de valeurs d'origine pour la combinaison trouvée.

+1

Wow, je suce. Je n'avais pas réalisé que c'était aussi simple. Merci. – Brandon

+0

+1: Pour vous mettre sur le 10k –

1

Quelque chose comme ça.

select max(cost) Cost, Name, Id 
FROM #Table 
group by ID, Name 
0

select max (coût), le nom du groupe tablename par id, nom

Questions connexes