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

编写SQL生成分公司事业部损益表合并CASE语句报错如何解决

现有SQL存在的问题

  • 语法错误:SELECT子句字段间缺少逗号分隔,Name字段后、SUM(Credit) AS Credit后均未加逗号,直接触发语法报错
  • 聚合逻辑错误:CASE判断直接调用原始行的Debet/Credit字段,未使用分组后的总借贷金额,同时重复定义Debet/Credit别名,字段命名冲突
  • 分组规则不完整:SELECT返回了Name字段,但GROUP BY仅声明LEDGER_ACCOUNT,若MySQL开启ONLY_FULL_GROUP_BY模式会直接报错,需将与账户一一对应的Name加入分组条件
  • 数据类型不兼容:CASE分支同时返回数值和空字符串,两类数据类型不一致会触发隐式转换报错,统一返回数值类型的NULL即可,查询展示时空值会自动显示为空白

修正后可正常运行的SQL

SELECT 
  LEDGER_ACCOUNT,
  Name,
  CASE WHEN SUM(Debit) > SUM(Credit) THEN FORMAT(SUM(Debit) - SUM(Credit), 2, 'de_DE') ELSE NULL END AS Debit,
  CASE WHEN SUM(Credit) > SUM(Debit) THEN FORMAT(SUM(Credit) - SUM(Debit), 2, 'de_DE') ELSE NULL END AS Credit
FROM boekingen
WHERE Branch = 'BXL'
  AND Division = 'WPL'
GROUP BY LEDGER_ACCOUNT, Name

逻辑说明

  • 先通过SUM(Debit)、SUM(Credit)计算每个账户分组后的总借方、总贷方金额,再做差值判断
  • FORMAT函数使用de_DE区域参数,可生成你预期的「千分位用点分隔、小数位用逗号分隔」的金额格式,不需要该格式可直接去掉FORMAT函数返回原始数值
  • 最终查询结果完全匹配你给出的预期输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:15:02