У меня есть таблица Products
с 2 столбцами: ProductID, ProductName
.
Когда я продаю эти продукты, я сохраняю продажи в 2 таблицах:
SalesHeaders
с 3 столбцами: IDHeader, EmployeeName, Date
SalesRows
с 3 columns: IDHeader, IDRow, ProductID
Есть 2 сотрудника, Джон и Мэри.
Теперь мне нужно добавить новый столбец в мою таблицу Products
под названием LastMarySaleDate
. Итак, я хочу обновить Products.LastMarySaleDate
, и для этого мне нужно выбрать самую последнюю запись из SalesHeaders
, где EmployeeName = 'mary'
и SalesRows.ProductID = Products.ProductID
.
Вот пример данных с ожидаемыми результатами
Продукты (до ОБНОВЛЕНИЯ):
ProductID ProductName LastMarySaleDate
--------- ------------ ----------------
A01 Mouse
A02 Keyboard
A03 Speakers
Заголовки продаж:
IDHeader EmployeeName Date
-------- ------------ ----------
1 Mary 2020-05-01
2 Mary 2020-05-02
3 John 2020-05-03
Строки продаж:
IDHeader IDRow ProductID
-------- ----- ---------
1 1 A01
1 2 A02
2 3 A01
3 4 A02
3 5 A03
Продукты (после ОБНОВЛЕНИЯ):
ProductID ProductName LastMarySaleDate
--------- ------------ ----------------
A01 Mouse 2020-05-02
A02 Keyboard 2020-05-01
A03 Speakers Note: Empty, since Mary never sold this productID
Я пробовал
UPDATE Products
SET Products.LastMarySaleDate = H.Date
FROM
(SELECT TOP 1 *
FROM SalesHeaders
LEFT OUTER JOIN SalesRows ON SalesHeaders.IDHeader = SalesRows.IDHeader
WHERE SalesHeaders.EmployeeName = 'Mary'
AND SalesRows.ProductID = Products.ProductID
ORDER BY SalesHeaders.Date DESC) AS H
, но не могу понять. Если бы кто-нибудь мог мне с этим помочь, было бы здорово, спасибо!