【问题标题】:Retrieve cost on certain date SQL检索特定日期 SQL 的成本
【发布时间】:2019-11-25 02:38:43
【问题描述】:

我有以下表格:

  • 订单(orderID、日期、shipID)

  • 运费(shipID、价格)

  • PO(prodID、orderID、金额)

  • 价格(prodID、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;

【问题讨论】:

    标签: sql sql-server


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多