Один из возможных подходов - использовать ROW_NUMBER()
для нумерации строк, сгруппированных по station
и упорядоченных по num
и tim
по убыванию, а затем выбрать строки с номером, равным 1.
Вход:
CREATE TABLE #Stations (
station int,
num int,
tim int
)
INSERT INTO #Stations
(station, num, tim)
VALUES
(1, 150, 10),
(1, 200, 222),
(1, 100, 5000),
(1, 200, 555),
(2, 100, 500),
(2, 120, 200),
(3, 1, 2)
Оператор:
;WITH cte AS (
SELECT
station,
num,
tim,
ROW_NUMBER() OVER (PARTITION BY station ORDER BY num DESC, tim DESC) AS Rn
FROM #Stations
)
SELECT
station,
num,
tim
FROM cte
WHERE Rn = 1
Вывод:
station num tim
1 200 555
2 120 200
3 1 2