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

SQL中结合CASE WHEN与WHERE计算2016年欧元销售额语法错误如何解决?

SQL代码修正方案

原代码存在的错误

  • CASE表达式用法错误:SELECT查询中不能用SET对原表字段赋值,CASE的作用是返回计算后的新值,而非修改原表数据
  • 字符串常量缺引号:lower(currency) = pound中的pound是字符串值,必须加单引号写成'pound'
  • 计算逻辑顺序错误:需要先把不同币种的单价统一换算为欧元,再乘以数量求和,不能先求和再处理汇率
  • CASE分支覆盖不全:缺少欧元币种的返回规则,未匹配的分支会返回NULL,导致求和结果异常

修正后代码

如果你需要把2016年所有订单都换算成欧元统计总额(按你写的1英镑兑换1.1欧元的汇率),用以下代码:

SELECT 
    SUM(quantity * 
        CASE 
            WHEN LOWER(currency) = 'pound' THEN price * 1.1
            WHEN LOWER(currency) = 'euro' THEN price
            ELSE 0 -- 其他币种可根据实际需求调整处理规则
        END
    ) AS total_sales_euro_2016
FROM order_items
WHERE YEAR(order_date) = 2016;

如果你的需求是仅统计2016年本身就以欧元计价的订单总额,可以简化为:

SELECT SUM(quantity * price) AS total_sales_euro_2016
FROM order_items
WHERE YEAR(order_date) = 2016 AND LOWER(currency) = 'euro';

用你提供的样例数据计算,仅统计欧元币种的2016年订单总额为17.5欧元。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:48:05