Запрос вернуть первый результат столбца в SQL? - PullRequest
0 голосов
/ 10 октября 2019

В SQL есть простой способ вернуть все строки, содержащие верхний экземпляр значения в столбце?

Учитывая таблицу ниже ...

Size    Color    Price
S       Red      1
S       Green    4
S       Blue     7
M       Olive    45
M       Black    99
M       Orange   153
L       Purple   4
L       Red      75
L       Blue     98

Я хочу вернуться ...

Size    Color    Price
S       Red      1
M       Olive    45
L       Purple   4

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

Вы можете попробовать 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 приведен здесь, так что вы можете увидеть демонстрацию.

Под влияниемиз: Выберите первый экземпляр записи

0 голосов
/ 10 октября 2019

Требуется разбить данные на части, чтобы получить целые числа, назначенные для каждого размера, а затем в зависимости от того, какой из разделов будет первым, как показано ниже

     Select size, color, price from
         (Select Size, Color,Price, 
         row_number() 
        over (partition by size order by 
             Price) as rn
       from mytable) t where t.rn =1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...