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

如何在MySQL中基于单列值执行两种计算生成total计算列

现有SQL存在的问题
  • 语法结构错误:CASE表达式的位置完全错误,将其他需要查询的普通业务字段全部嵌套进了CASE语法结构中,不符合SELECT子句的字段罗列规则。
  • CASE语法不符合规范:每个WHEN分支后不允许单独加字段别名,total别名需要放在整个CASE ... END结构的末尾;另外双分支判断可以用ELSE替代第二个WHEN简化逻辑,不需要额外写不等于判断。
  • 分组规则不符合MySQL高版本要求:MySQL 5.7及以上版本默认开启ONLY_FULL_GROUP_BY模式,SELECT中出现的非聚合字段必须全部包含在GROUP BY子句中,原SQL仅分组两个字段,但查询了大量未分组、未聚合的字段,执行会直接报错。
  • 代码中存在HTML转义字符:原代码中的&lt;&gt;是HTML转义后的不等于符号,实际SQL中需要写为<>或者!=。
正确实现的SQL语句
SELECT 
    d2c_3_csg_batch_in.transactioncode AS transactioncode,
    d2c_3_csg_batch_in.site AS site,
    d2c_3_csg_employees.lastname AS lastname,
    d2c_3_csg_employees.firstname AS firstname,
    d2c_3_csg_employees.payrate AS payrate,
    d2c_3_csg_batch_in.employeecode AS employeecode,
    d2c_3_csg_batch_in.jobcode AS jobcode,
    d2c_3_csg_employees.CompanyFrequency AS CompanyFrequency,
    d2c_3_csg_batch_in.inputunits AS inputunits,
    d2c_3_csg_transactioncodes.multiplier AS multiplier,
    d2c_3_csg_transactioncodes.payspacewording AS payspacewording,
    -- 新增计算列total的逻辑
    CASE 
        WHEN d2c_3_csg_batch_in.transactioncode = '584' THEN d2c_3_csg_batch_in.inputunits
        ELSE d2c_3_csg_batch_in.inputunits * d2c_3_csg_employees.payrate * d2c_3_csg_transactioncodes.multiplier
    END AS total
FROM d2c_3_csg_transactioncodes
JOIN d2c_3_csg_batch_in ON d2c_3_csg_transactioncodes.code = d2c_3_csg_batch_in.transactioncode
LEFT JOIN d2c_3_csg_employees ON d2c_3_csg_batch_in.employeecode = d2c_3_csg_employees.employeenumber
WHERE d2c_3_csg_batch_in.flag = 'ADD' AND d2c_3_csg_batch_in.prp = 'Y'
-- 适配ONLY_FULL_GROUP_BY模式,将所有非聚合查询字段加入分组
GROUP BY 
    transactioncode, site, lastname, firstname, payrate, employeecode, 
    jobcode, CompanyFrequency, inputunits, multiplier, payspacewording
ORDER BY d2c_3_csg_batch_in.employeecode DESC, d2c_3_csg_batch_in.transactioncode;

如果你的业务逻辑仅需要按employeecode和transactioncode去重,不需要保留其他字段的不同值,也可以把GROUP BY改为DISTINCT,或者对其他非分组字段用MAX()/MIN()等聚合函数包裹。

内容的提问来源于stack exchange,提问作者GURU mcewan.marriott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:03