Oracle总和不正确

Chr*_*ris -2 sql oracle

我用SQL*Plus创建了一个"报告",它从OLTP表中添加数据并将结果通过电子邮件发送给一堆用户.

我发现了一个问题.表中的总数CATEGORIES是错误的

SQL> select * from CATEGORIES;

DATE              P4         D1          D2          P5          P6       P7       TOTAL            
--------- ---------- ---------- ----------- ----------- ----------- -------- -----------            
14-OCT-14    200,623  2,320,173   6,807,295  17,861,027  17,386,567  803,982  45,379,667   
Run Code Online (Sandbox Code Playgroud)

它应该是"45,379,307"而不是"45,379,667".

此表有NUMBER(10)列,基表有NUMBER列(无精度)来存储类别P4,D1,D2 ...

CATEGORIES表中的总数CATG_ACTV因此从基表获得.

UPDATE CATEGORIES
   SET TOTAL = (SELECT SUM(total_catg_count) FROM CATG_ACTV);
Run Code Online (Sandbox Code Playgroud)

为什么总不正确?是因为NUMBER列的大小不正确吗?怎么解决这个问题?

Jos*_*ber 5

我知道你做了什么.当你进行算术运算时,你转换了数字.你使用200263而不是200623.

200263 + 2320173 + 6807295 + 17861027 + 17386567 + 803982 = 45379307

  • 给你+1回.你有金徽章和高代表,所以这不仅仅是一个n00b的工作.我敢肯定,我们几个小时都在盯着代码试图找出为什么代码给出"错误"的答案.与此相比,语法和致命错误很容易.有时最好离开并获得一些新鲜空气然后回来,或带上一个同事的第二组眼睛,甚至张贴在SO上.当你找到解决方案时,我确定你就像是omg duh. (2认同)