Установка:
declare @MyTable table(ID int, X int, Y int)
insert @MyTable
values
( 1 , 1 , 1),
( 2 , 1 , 2),
( 3 , 1 , 3),
( 4 , 2 , 40),
( 5 , 2 , 500),
( 6 , 3 , 1),
( 7 , 3 , 100),
( 8 , 3 , 10)
Запрос:
;with cte
as
(
select *, row_number() over(partition by X order by Y desc) RowNumber
from @MyTable
)
select Id, X, Y
from cte
where RowNumber = 1
Результат:
Id X Y
----------- ----------- -----------
3 1 3
5 2 500
7 3 100
Запрос для MS SQL 2005+.
Настройка будет работать в MS SQL 2008 +.