检索特定日期的费用SQL

时间:2019-11-25 02:38:43

标签: sql sql-server

我有下表:

  • 订单(订单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;

1 个答案:

答案 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;