Jak pobrać tylko rekord z najwyzsza wartościa w danej kolumnie gdy jest wiecej niz jeden taki rekord

0

mam tabelkę

ID numer wartosc
1 123 16
2 444 56
3 444 12
4 712 100

chciałbym zeby pobrało wiersze o ID 1,2,4. Wiersz 3 chciałbym pominąć bo ma numer taki sam jak wiersz o ID 2 ale ma niższą wartość. Podsumowując chcę pobrać wiersze o różnych numerach ale w przypadku gdy mam takie same numery to w wyniku chciałbym zeby byl wiersz o maksymalnej wartości dla danego numeru.

Bardzo proszę o pomoc

0

np. tak

select * from tabela where (id, numer) in (select min(id), numer from tabela group by numer)
0

chyba nie napisalem zbyt jasno :) danych w tabeli mam o wiele wiecej chodzi mi o to ze chce pobierac wszystkie rekordy z tabeli ale w przypadku gdy w jakis rekordach koluna wartosc ma taka sama liczbe to do koncowego wyniku biore tylko rekord z max(wartosc)
W podanym przykładzie wynik powinien miec postać:

1 123 16
2 444 56
4 712 100
0

@Marcin.Miga: MS SqlServer2014

0
WITH CTE
as (SELECT numer, MAX(wartosc) mWart 
FROM tabela
GROUP BY numer)

SELECT t.ID, t.numer, t.wartosc 
FROM tabela t
INNER JOIN CTE
ON t.numer = CTE.numer
AND t.wartosc = CTE.mWart
0

@BlackBad: tak probowałem tylko musze miec tez id

0
SELECT * FROM tabela group by numer order by id,numer
0

Sorry zamotany byłem jak pisałem i musiałem wychodizć już. Poprawiłem kod ... teraz jest poprawnie jak miało byc i widzisz wszystko co masz widzieć. Patrz ten post wyżej.

0
select id, wartość, numer from ( 
select *, row_number() over (partition by numer order by wartość desc) r from tab) dt
where r = 1

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0