Извиняюсь за запутанный заголовок вопроса, но я не совсем уверен, как описать проблему.
У меня есть две таблицы в Oracle 9i:
Pricing
-------
SKU
ApplicableTime
CostPerUnit
Inventory
---------
SKU
LastUpdatedTime
NumberOfUnits
Pricing
содержит пошаговые обновления стоимости каждого конкретного элемента SKU в определенное время Unix.Например, если у меня есть записи:
SKU ApplicableTime CostPerUnit
------------------------------------
12345 1000 1.00
12345 1500 1.50
, то позиция 12345 составляет 1,00 долл. США за единицу в любое время между 1000 и 1500 и 1,50 долл. США в любое время после 1500.
Inventory
содержит SKU, время последнего обновления и количество единиц.
Я пытаюсь создать запрос таким образом, чтобы для каждой строки в Inventory
я соединил две таблицы на основе SKU и нашелсамое большое значение для Pricing.ApplicableTime
, которое НЕ больше Inventory.LastUpdatedTime
, получить CostPerUnit
этой конкретной записи из Pricing
и вычислить TotalCost = CostPerUnit * NumberOfUnits
:
SKU TotalCost
-----------------------------------------------------------------------------------
12345 (CostPerUnit at most recent ApplicableTime <= LastUpdatedTime)*NumberOfUnits
12346 <same>
... ...
Как бы я это сделал