我有下表:
订单(订单ID,日期,发货ID)
运输(shipID,价格)
PO(产品ID,订单ID,金额)
价格(产品ID,fromDate,价格)
我需要检索每个订单ID和总价格,包括订单中物品的成本+购买的运输成本。物料的成本必须是订单日期而非最近日期的物料成本。 Price表存储从特定日期(fromDate属性)开始的产品的不同价格。因此,第d天产品的价格是fromDate值f最大的条目中的价格,使得f≤d。我知道我可以使用命令max(fromDate)检索商品的最新价格,但是,我不知道如何在特定日期获取价格。到目前为止,这是我的代码:
SELECT o.orderId, SUM(pr.price) + SUM(s.price) orderCost
FROM "Order" o
INNER JOIN Shipping s
ON o.shipId = s.shipId
INNER JOIN PO po
ON po.orderId = o.orderId
INNER JOIN Price pr
ON pr.prodId = po.prodId
GROUP BY o.orderId;
答案 0 :(得分:1)
尝试一下
select o.orderId, SUM(pr.price) + SUM(s.price) orderCost
from [Order] o
INNER JOIN Shipping s ON o.shipId = s.shipId
inner join PO po on o.shipId = po.shipId
inner join (select top 1 price from Price pr where fromDate = (select max(fromDate)from Price pr where fromDate <= [date])) pr
on pr.prodID = po.prodID
GROUP BY o.orderId;