Доступ: выберите строку с самой последней датой для каждого продукта - PullRequest
0 голосов
/ 17 июня 2020

У меня есть эта таблица с именем Transaction:

Таблица транзакций

И я пытаюсь сделать запрос SQL о доступе, который найдет для каждого продукта самую последнюю связанную дату. Результаты должны выглядеть так: (я хочу увидеть количество, а также дату и название продукта)

Полученные результаты

Спасибо

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

Попробуйте с row_number, если вы используете MySQL 8.0

select
    id,
    quantity,
    date
from
(
    select
        id,
        quantity,
        date,
        row_number() over (partition by product order by date desc) as rn
    from transaction
) subq
where rn = 1
0 голосов
/ 17 июня 2020

Вы должны group строк по продукту при выборе последней (max) даты:

select t.product, t.quantity, t.date
from transaction t
inner join (
    select product, max(date) as MaxDate
    from transaction
    group by product
) tm on t.product = tm.product and t.date = tm.MaxDate
0 голосов
/ 17 июня 2020

Рассмотрите возможность фильтрации с помощью подзапроса:

select t.*
from transactions t
where t.date = (
    select max(t1.date)
    from transactions t1
    where t1.product = t.product
)
...