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

SQL阶梯定价计算问题:如何按购买数量匹配单价计算总价

电商阶梯定价SQL查询修正

你的问题出在没对阶梯数量做排序,TOP 1直接取了表中第一条记录(QTY=1对应的12.50),所以算出62.50,而非预期的55.00。

要实现正确的阶梯定价匹配,核心逻辑是:找到当前SKU下,购买数量大于等于阶梯数量的所有记录,然后取其中最大的那个阶梯数量对应的单价(阶梯定价规则是买得越多单价越低,最大的符合条件的阶梯就是对应单价)。

修正后的SQL代码

DECLARE @sku nvarchar(50)
DECLARE @qty int
SET @sku = 'SKU-1'
SET @qty = 5

-- 方案1:筛选符合条件的阶梯,按QTY倒序取第一条
SELECT TOP 1 (price * @qty) AS total_price
FROM global_tier_pricing 
WHERE sku = @sku AND qty <= @qty
ORDER BY qty DESC

-- 方案2:用子查询找到匹配的最大阶梯数量,再关联取单价
SELECT (gtp.price * @qty) AS total_price
FROM global_tier_pricing gtp
WHERE gtp.sku = @sku 
AND gtp.qty = (
    SELECT MAX(qty) 
    FROM global_tier_pricing 
    WHERE sku = @sku AND qty <= @qty
)

测试验证

  • 当@qty=3时,匹配QTY=1的阶梯,单价12.50,总价37.50
  • 当@qty=5时,匹配QTY=5的阶梯,单价11.00,总价55.00
  • 当@qty=12时,匹配QTY=10的阶梯,单价10.00,总价120.00
  • 当@qty=15时,匹配QTY=15的阶梯,单价8.50,总价127.50

这两种方案都能准确匹配对应阶梯的单价,不需要复杂的CASE或BETWEEN语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:50:25