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

基于销售零件号的订单报价对比计算需求技术问询

解决方案:基于SQL的订单报价对比查询

首先咱们先明确需求的核心要点,确保没理解错:

  • 按**销售零件号(sales part number)**分组,对比两份报价的销售额
  • 计算三份关键数值:
    • 报价1(Q1)总销售额:Q1销售数量 × Q1投标价格
    • 报价2(Q2)总销售额:Q2销售数量 × Q2投标价格
    • 期望总销售额:如果零件在Q2中存在,用Q2销售数量 × Q1投标价格;如果零件只在Q1中存在,用Q1销售数量 × Q1投标价格

假设的表结构

我先假设你的两份报价数据分别存在两个表中,表结构如下(如果实际表名/字段名不同,替换成你的即可):

  • quotation_1(Q1数据):包含字段 sales_part_number, sales_qty, bid_price
  • quotation_2(Q2数据):包含字段 sales_part_number, sales_qty, bid_price

最终SQL查询语句

SELECT
  -- 取存在的零件号作为分组键(覆盖仅Q1或仅Q2存在的情况)
  COALESCE(q1.sales_part_number, q2.sales_part_number) AS sales_part_number,
  -- 计算Q1总销售额(仅当零件在Q1存在时才有值,否则为0)
  COALESCE(q1.sales_qty * q1.bid_price, 0) AS q1_total_sales,
  -- 计算Q2总销售额(仅当零件在Q2存在时才有值,否则为0)
  COALESCE(q2.sales_qty * q2.bid_price, 0) AS q2_total_sales,
  -- 计算期望总销售额,按需求逻辑判断
  CASE
    -- 零件在Q2存在时,用Q2数量×Q1价格
    WHEN q2.sales_part_number IS NOT NULL THEN
      COALESCE(q2.sales_qty * q1.bid_price, 0)
    -- 零件仅在Q1存在时,用Q1数量×Q1价格
    ELSE
      COALESCE(q1.sales_qty * q1.bid_price, 0)
  END AS expected_total_sales
FROM
  quotation_1 q1
  -- 使用全连接来保留两边所有的零件号,处理存在差异的情况
  FULL JOIN quotation_2 q2 ON q1.sales_part_number = q2.sales_part_number
GROUP BY
  COALESCE(q1.sales_part_number, q2.sales_part_number),
  q1.sales_qty, q1.bid_price, q2.sales_qty, q2.bid_price
ORDER BY
  sales_part_number;

关键逻辑解释

  1. FULL JOIN:用来同时保留Q1和Q2中所有的销售零件号,即使某份报价里没有这个零件,也能在结果中显示出来,完美处理“偶有差异”的场景。
  2. COALESCE函数:用来处理NULL值,比如当零件仅存在于Q2时,Q1的字段会是NULL,这时候用COALESCE把计算结果转为0,避免出现NULL影响报表可读性。
  3. CASE语句:严格按照你的需求判断期望总销售额的计算方式,确保逻辑准确。

如果你的实际表结构或字段名有调整,只需要替换对应名称即可,这个查询逻辑可以直接复用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:16:42