Запрос, дающий все записи, необходим для генерации последней записи из таблицы истории. - PullRequest
0 голосов
/ 28 апреля 2020

Требуется получить последнюю запись из таблицы истории при объединении с таблицей.

enter image description here

, когда я выполняю запрос с ниже

select * from Product, ProductHistory where Product.ProductNo=ProductNo.ProductNo

Это дает все записи, что мне нужно, это последняя запись из таблицы ProductHistory

1 Ответ

1 голос
/ 28 апреля 2020

не проверено

Вот как я бы это сделал:

начните с подзапроса, чтобы получить «самую последнюю» дату для каждого продукта:

select ProductNo, max(Date)
from ProductHistory
group by ProductNo

Затем вы должны присоединить этот результат к таблице ProductHistory, чтобы получить соответствующую «Транзакцию»:

select PH.ProductNo, PH.Transaction, PH.Date
from (
   select ProductNo, max(Date)
   from ProductHistory
   group by ProductNo
) MaxPH
inner join ProductHistory PH
   on PH.ProductNo = MaxPH.ProductNo
   and PH.Date = MaxPH.Date

Наконец, присоединитесь к таблице Product, чтобы получить Product (имя)

select P.Product, P.ProductNo, PH.Transaction, PH.Date
from (
   select ProductNo, max(Date)
   from ProductHistory
   group by ProductNo
) MaxPH
inner join ProductHistory PH
   on PH.ProductNo = MaxPH.ProductNo
   and PH.Date = MaxPH.Date
inner join Product P on P.ProductNo = PH.ProductNo

Вы также можете использовать номера строк с разделом, чтобы найти «последний».

...