You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中左连接时态表计算订单利润率?

可以通过LEFT JOIN实现该需求

你可以使用LEFT JOIN结合时态表的时间区间条件,关联两张表并获取订单对应下单时刻的采购成本及其他采购表字段,同时计算利润率。以下是具体的SQL实现:

SELECT
    co.Order_Number,
    co.Item_ID,
    co.Sales_Price,
    co.Order_Date,
    p.Cost,
    -- 计算Margin:售价减采购成本
    co.Sales_Price - p.Cost AS Margin,
    -- 带回Purchase表的其他所有列,可按需替换为具体字段列表
    p.Item_Name,
    p.Valid_From,
    p.Valid_To
    -- 其他Purchase表字段可在此继续添加
FROM Customer_Order co
LEFT JOIN Purchase p
    ON co.Item_ID = p.Item_ID
    -- 核心条件:订单日期落在采购记录的有效期区间内(符合SQL Server时态表左闭右开的period规则)
    AND co.Order_Date >= p.Valid_From
    AND co.Order_Date < p.Valid_To
ORDER BY co.Order_Number;

逻辑说明:

  • 通过Item_ID关联两张表,确保匹配同一件商品的采购记录。
  • 时间条件co.Order_Date >= p.Valid_From AND co.Order_Date < p.Valid_To是关键,它能精准定位订单下单时对应的有效采购成本记录(时态表的Valid_To代表记录失效的起始时间,为排他性边界)。
  • 使用LEFT JOIN而非INNER JOIN,可保证即使某笔订单没有找到对应有效期的采购记录(比如订单日期早于所有采购记录的生效时间),该订单依然会出现在结果集中,此时采购相关字段会显示为NULL。
  • Margin字段通过Sales_Price - Cost直接计算得到,满足需求。

内容的提问来源于stack exchange,提问作者E. L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:53:18