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

SQL跨表含NULL列对比:查询成品对应全部组件的当前及采购历史成本

问题原因

你当前使用的默认JOIN属于内连接,仅会保留三张表中ComponentID完全匹配的行,而自制件不存在于仅存储外购件数据的vdvPurchased表中,匹配失败就会被过滤,因此查询结果没有自制件数据。

修复方案

把和vdvPurchased表的内连接改为左连接(LEFT JOIN)即可保留所有成品关联的组件行,自制件没有对应采购记录时,[Purchased Cost]字段会返回空值,符合预期展示效果。

修改后的查询语句

SELECT DISTINCT
    vdvFinishedGood.StepID AS [Step],
    vdvFinishedGood.ComponentID AS [Component],
    vdvInventory.LastUnitCost AS [Current Cost],
    vdvPurchased.Cost AS [Purchased Cost]
FROM 
    vdvFinishedGood
JOIN 
    vdvInventory ON vdvInventory.ComponentID = vdvFinishedGood.ComponentID
LEFT JOIN
    vdvPurchased ON vdvPurchased.ComponentID = vdvFinishedGood.ComponentID
WHERE 
    vdvFinishedGood.ItemId = 'YOYO'

额外优化建议

如果同一个外购件在vdvPurchased表中有多条近3个月的采购记录,DISTINCT会返回多条同组件不同采购价的行,你可以根据需求调整:

  • 要取最新采购价:可以加排序逻辑或者用MAX(采购日期)做聚合
  • 要取平均采购价:可以用AVG(vdvPurchased.Cost)做聚合,同时补充GROUP BY分组字段

内容的提问来源于stack exchange,提问作者MyOwnIssues

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:02