当前位置: 首页 > news >正文

在MySQL中执行sum case when报错:SUM does not exist

1. 报错

在pgsql中能正常运行的一段SQL在MySQL中运行的时候报错了:

        SELECT DATE( hr.handle_time ) AS statsDate,SUM ( CASE WHEN hma.app_type IN ( '2', '5' ) THEN ch_money ELSE 0 END ) AS aliPayAmt,SUM ( CASE WHEN hma.app_type IN ( '1', '4' ) THEN ch_money ELSE 0 END ) AS wxPayAmt,COUNT ( CASE WHEN hma.app_type IN ( '2', '5' ) THEN 1 ELSE NULL END ) AS aliPayTrans,COUNT ( CASE WHEN hma.app_type IN ( '1', '4' ) THEN 1 ELSE NULL END ) AS wxPayTransFROMhp_record hrINNER JOIN hp_record_detail hrd ON hr.record_id = hrd.record_idINNER JOIN hp_merchant_app hma ON hr.app_id = hma.app_idINNER JOIN hp_channel hc ON hc.ch_id = hrd.ch_idWHEREhrd.expense_status = '1'AND hrd.ch_money > 0AND hc.ch_type NOT IN ('100', '101', '102')GROUP BYDATE(hr.handle_time)
SQL 错误 [1630] [42000]: FUNCTION hipay.SUM does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

2. 处理方案

报错分析:

  1. MySQL 是支持 CASE WHEN 的,它和其他 SQL 数据库(比如 PostgreSQL、SQL Server 等)一样都支持 CASE 表达式。
  2. MySQL 也支持 SUM 聚合函数。
  3. SQL 语句中的 SUM 函数和 COUNT 函数使用了带有 CASE WHEN 的聚合形式。在 MySQL 中,CASE WHEN 的使用有时会导致解析问题,特别是当 CASE 表达式中没有明确返回的值时,MySQL 可能会尝试错误地解析为某个函数(如 SUM、COUNT)。这个错误提示表明 MySQL 可能错误地将 SUM 解析为一个函数,而不是聚合函数。

修改后的SQL:

SELECT DATE(hr.handle_time) AS statsDate,SUM(IF(hma.app_type IN ('2', '5'), ch_money, 0)) AS aliPayAmt,SUM(IF(hma.app_type IN ('1', '4'), ch_money, 0)) AS wxPayAmt,COUNT(IF(hma.app_type IN ('2', '5'), 1, NULL)) AS aliPayTrans,COUNT(IF(hma.app_type IN ('1', '4'), 1, NULL)) AS wxPayTrans
FROM hp_record hr
INNER JOIN hp_record_detail hrd ON hr.record_id = hrd.record_id
INNER JOIN hp_merchant_app hma ON hr.app_id = hma.app_id
INNER JOIN hp_channel hc ON hc.ch_id = hrd.ch_id
WHERE hrd.expense_status = '1'AND hrd.ch_money > 0AND hc.ch_type NOT IN ('100', '101', '102')
GROUP BY DATE(hr.handle_time);
http://www.lryc.cn/news/497520.html

相关文章:

  • 【openssl】相关指令
  • 实例分割详解
  • D87【python 接口自动化学习】- pytest基础用法
  • 浅谈MySQL路由
  • matlab中disp,fprintf,sprintf,display,dlmwrite输出函数之间的区别
  • 30.100ASK_T113-PRO 用QT编写视频播放器(一)
  • Linux-GPIO应用编程
  • opencvocr识别手机摄像头拍摄的指定区域文字,文字符合规则就语音报警
  • 微服务即时通讯系统(5)用户管理子服务,网关子服务
  • postgreSQL安装后启动有The application server could not be contacted问题
  • 架构05-架构安全性
  • 虚幻引擎---材质篇
  • NPM镜像详解
  • 从智能合约到去中心化AI:Web3的技术蓝图
  • STM32进阶 定时器3 通用定时器 案例1:LED呼吸灯——PWM脉冲
  • 开源即时通讯与闭源即时通讯该怎么选择,其优势是什么?
  • 930[water]
  • 2024论文翻译 | Multi-Review Fusion-in-Context
  • (78)MPSK基带调制通信系统瑞利平坦衰落信道传输性能的MATLAB仿真
  • 【机器学习】机器学习的基本分类-监督学习-决策树-CART(Classification and Regression Tree)
  • 【金猿CIO展】复旦大学附属中山医院计算机网络中心副主任张俊钦:推进数据安全风险评估,防范化解数据安全风险,筑牢医疗数据安全防线...
  • 工业机器视觉-基于深度学习的水表表盘读数识别
  • 基于ZooKeeper搭建Hadoop高可用集群
  • 力扣88题:合并两个有序数组
  • python 笔记之线程同步和死锁
  • SpringBoot小知识(4):高级配置知识与bean的绑定
  • Python毕业设计选题:基于大数据的淘宝电子产品数据分析的设计与实现-django+spark+spider
  • Lua面向对象实现
  • OpenCV的圆形检测‌HoughCircles
  • iOS视图控制器的生命周期及各阶段的作用