【问题标题】:MySQL sum with negative decimals带有负小数的 MySQL 和
【发布时间】:2012-09-28 20:21:26
【问题描述】:

我的表中有一个 qty 列,我正在尝试对这些值求和。字段类型是 varchar(20)。下面 qty 的总和应该正好为 0。它是负小数和正小数的混合。

exhibit A(截图)

当我执行下面的求和时,我得到一吨小数而不是 0。我假设这是一个数据类型问题。解决此问题的最佳方法是什么?

exhibit B(截图)

【问题讨论】:

  • 您的屏幕截图受到限制。请编辑问题并发布示例数据和表结构。
  • @bluefeet - 我更新了图片的链接,现在应该可以使用了。
  • @drschultz qty 的数据类型是什么?
  • 为什么要将数值存储在字符列中?
  • @ianzz 我没有创建架构,我必须使用它

标签: mysql sum negative-number decimal


【解决方案1】:

您不应将数字数据存储为字符串,但如果这样做,则需要 cast() 它以对其应用 SUM() 聚合:

SELECT SUM(CAST(yourcolumn AS DECIMAL(10, 2))) 
FROM yourtable

所以您的查询将是:

select sum(cast(qty as DECIMAL(10, 2)))
from inventory i
where i.refDocNum = 485
  and i.refApp = 'WO'
  and i.type in (20, 21)

【讨论】:

  • 请注意,在不指定精度的情况下转换为 DECIMAL 只会产生整数值。
  • @bluefeet 谢谢,我听到你说的将它存储为字符串,但这是在我参与这个项目之前。
猜你喜欢
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多