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

如何将CASE表达式生成的拆分总计合并为单一总金额?

解决SQL中拆分Total金额合并为单一总价值的问题

你的查询之所以会生成拆分的Total金额,核心原因是GROUP BY子句里包含了il.unit_of_measure,这会让同一个客户因单位不同被拆分成多条记录,再加上CASE语句的判断逻辑,最终导致Total金额被拆分。

下面是修改后的查询,能直接输出每个客户的单一总价值:

SELECT  
    ih.customer_id AS [Customer ID],
    customer.customer_name AS [Customer],
    COUNT(DISTINCT ih.invoice_no) AS [Orders],
    SUM(
        CASE 
            WHEN il.unit_of_measure = 'IN' 
                THEN (il.qty_shipped * 12) * il.unit_price 
                ELSE il.qty_shipped * il.unit_price 
        END
    ) AS [Total]
FROM
    invoice_hdr ih
INNER JOIN 
    invoice_line il ON ih.invoice_no = il.invoice_no
INNER JOIN 
    customer ON customer.customer_id = ih.customer_id
GROUP BY 
    ih.customer_id, customer.customer_name
ORDER BY 
    ih.customer_id

关键修改说明:

  • 将CASE判断逻辑移入SUM函数内部:先对每一行计算出正确的金额(英寸单位转成对应数值),再统一求和,避免分组后拆分计算
  • 从GROUP BY中移除il.unit_of_measure:确保每个客户只生成一行汇总记录
  • 把COUNT(ih.invoice_no)改为COUNT(DISTINCT ih.invoice_no):一个订单可能对应多个发票行,原写法会重复计数订单数,用DISTINCT才能得到真实的订单数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:03:53