我用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列的大小不正确吗?怎么解决这个问题?
我知道你做了什么.当你进行算术运算时,你转换了数字.你使用200263而不是200623.
200263 + 2320173 + 6807295 + 17861027 + 17386567 + 803982 = 45379307