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

执行SQL分组求和遇42883错误:sum(character varying)不存在

解决PostgreSQL中SUM函数无法处理字符类型的错误

问题原因

错误提示明确:SUM()函数仅支持数值类型(如int、numeric等)的计算,但你的details.recevied_qty字段是character varying(字符串)类型,PostgreSQL找不到匹配的SUM函数实现。

解决方案

方案1:查询时显式转换字段类型

在SUM函数内将字符串字段转换为数值类型,可使用PostgreSQL的类型转换语法::numeric或标准CAST()函数:

select product.product_name, details.batch_no, details.kit_no, SUM(details.recevied_qty::numeric) Rcdqty 
from masters_productmaster product
  join inventory_grndetails details ON details.product_id_id = product.id
group by product.product_name, details.batch_no, details.kit_no;

注意:原SQL中的DISTINCT可以去掉,GROUP BY已经会自动对分组后的结果去重,无需重复使用。

方案2:修改表字段类型(长期推荐)

如果recevied_qty字段的业务含义就是数量,直接修改字段类型为数值类型是更彻底的解决办法:

ALTER TABLE inventory_grndetails ALTER COLUMN recevied_qty TYPE numeric USING recevied_qty::numeric;

修改完成后,原查询语句无需转换即可正常运行。

额外注意事项

如果转换过程中出现报错,说明字段中存在无法转换为数值的无效字符串,需要先清理数据(修正或删除这些无效记录)后再执行转换或查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:33:12