Вы можете попробовать CTE
функцию и ROW_NUMBER()
, чтобы выполнить это:
Это завершится как по убыванию , что вы говорите в комментариях
;WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY Size ORDER BY Price DESC)
FROM myTable
)
SELECT Size, Color, Price FROM CTE
WHERE RN = 1
Это позволяет достичь желаемых результатов:
;WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY Size ORDER BY Price ASC)
FROM myTable
)
SELECT Size, Color, Price FROM CTE
WHERE RN = 1
ORDER BY
CASE Size
WHEN 'S' THEN 1
WHEN 'M' THEN 2
WHEN 'L' THEN 3
END
Пример SQL FIDDLE приведен здесь, так что вы можете увидеть демонстрацию.
Под влияниемиз: Выберите первый экземпляр записи