Подтвердить что ты не робот

SQL Выбор нескольких столбцов на основе максимального значения в одном столбце

ОК, поэтому я посмотрел, как другие решения не помогут. Итак, вот что я пытаюсь сделать. Мне нужно выбрать строку с несколькими столбцами, где значение в одном столбце является максимальным значением.

Вот пример данных

    orderfileid item number item cost   warehouse
    1           1234        3.45             ATL
    1           2345        1.67             DFW
    3           2345        2.45             NYY
    3           678         2.4              ORD
    2           1234        1.67             DFW

Мне нужно выбрать всю строку, где orderfileid является максимальным для каждого уникального номера элемента

возвращаемый набор данных должен выглядеть как

    orderfileid item number item cost   warehouse
    2           1234        1.67             DFW
    3           2345        2.45             NYY
    3           6789        2.4              ORD

Я думаю, что я пробовал каждую комбинацию select max (orderfileid), о которой я могу думать

Любая помощь будет назначена. спасибо

4b9b3361

Ответ 1

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

SELECT t.OrderFileId, t.ItemNumber, t.ItemCost, t.Warehouse
    FROM YourTable t
        INNER JOIN (SELECT ItemNumber, MAX(OrderFileId) AS MaxOrderId
                        FROM YourTable
                        GROUP BY ItemNumber) q
            ON t.ItemNumber = q.ItemNumber
                AND t.OrderFileId = q.MaxOrderId

Ответ 2

select 
    t.* 
from 
    table t 
    inner join (
        select itemnumber, max(orderfileid) maxof
        from table
        group by itemnumber
    ) m on t.itemnumber = m.itemnumber 
            and t.orderfileid = m.maxof

Ответ 3

Try

SELECT * FROM `TABLE` WHERE orderfileid=(select max(orderfileid) from TABLE)

Ответ 4

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

Удаление строк: ни один член не имеет записей X

это нечто похожее на выполнение ранжирования в Oracle. мой предыдущий пост был для оракула. мой плохой.

Ответ 5

Я бы даже не использовал Max. Просто соедините GROUP BY и ORDER BY

SELECT * FROM orders GROUP BY item_number ORDER BY orderfileid DESC

то для минимального простое изменение в ASC

Ответ 6

Я думаю, что вы ищете предложение "Имея". Посмотрите это.

выберите orderfileid, max (itemnumber), itemcost, склад из группы MyTable с помощью orderfileid с max (itemnumber);