update table set ocr =
(select l.ocr
from
(select l.customer as customer, l.ocr as ocr, l.amount as amount, l.date as date, ROW_NUMBER() OVER (partition by l.customer, l.amount Order BY l.date) as RowNum
from lookuptable l
order by l.date
)a
(select t.customer as customer, t.amount as amount, ROW_NUMBER() OVER (PARTITION BY t.customer, t.amount order by t.customer) as RowNum
from table t
)b
where a.customer = b.customer and a.amount=b.amount and a. rowNum = b.RowNum
)
Я не проверял его, но он может дать вам представление.
Редактировать: только что понял, нет необходимости присоединяться к внутреннему запросу.Идея состоит в том, чтобы сначала выбрать все записи из справочной таблицы и назначить им номер строки в порядке возрастания даты.так что тот же клиент и та же сумма с разными датами получат номера строк в приращениях.
Затем получите записи из старой таблицы и присвойте им номера строк, разделенные на клиента и сумму.Таким образом, мы можем сопоставить клиента, сумму и номер строки, что первый и тот же клиент и сумма будут инициализированы самым старым OCR, так как строки упорядочены по дате