今天在oracle12c数据库遇到的问题,下面重现一下:

1、先创建一个临时表 temp、一个数据表bitest_sum;

-- Create table
create table PEC.BITEST_SUM
(
yyyymm VARCHAR2(6),
factno VARCHAR2(4),
dept_no VARCHAR2(4),
product VARCHAR2(6),
amt NUMBER default 0 not null,
amt_ys NUMBER default 0 not null
)
tablespace BITBS;
-- Add comments to the table
comment on table PEC.BITEST_SUM
is 'SUM结果测试';
-- Create/Recreate indexes
create index PEC.BITEST_SUM_01 on PEC.BITEST_SUM (YYYYMM, FACTNO, DEPT_NO, PRODUCT)
tablespace IDX_BI;

2、插入各维度数据到temp

DELETE FROM gt_temp;
INSERT INTO gt_temp
(main_code,
v1
)
SELECT 'A','AA01' FROM dual; INSERT INTO gt_temp
(main_code,
v1
)
SELECT 'B',DEPT_NO FROM(
select 'BB'||dbms_random.string('x',2) DEPT_NO from dual) CONNECT BY ROWNUM <= 1000; INSERT INTO gt_temp
(main_code,
v1
)
SELECT 'C', lpad(ROWNUM,6,'') FROM dual CONNECT BY ROWNUM <=1000;

3、插入维度数据及随机值到结果表 bitest_sum

DECLARE
CURSOR C1 IS
SELECT v1 FROM pec.gt_temp WHERE main_code='A';
CURSOR C2 IS
SELECT v1 FROM pec.gt_temp WHERE main_code='B';
CURSOR C3 IS
SELECT v1 FROM pec.gt_temp WHERE main_code='C';
BEGIN
FOR R1 IN C1 LOOP
FOR R2 IN C2 LOOP
FOR R3 IN C3 LOOP
INSERT INTO BITEST_SUM
SELECT '',a.v1,b.v1,c.v1, d.amt1,D.AMT2 FROM
gt_temp a,gt_temp b,gt_temp c,
(SELECT round(dbms_random.value(-10000,99999),2) amt1 ,round(dbms_random.value(-10000,99999),2) amt2 FROM dual) d
WHERE a.main_code='A' AND A.V1=R1.V1
AND B.MAIN_CODE='B' AND B.V1=R2.V1
AND C.MAIN_CODE='C' AND C.V1=R3.V1;
END LOOP;
END LOOP;
END LOOP;
END;
COMMIT;

4、检查数据结果

5、对结果数据进行update操作。提交之后再查询:

UPDATE pec.bitest_sum2 SET amt_ys=0 WHERE amt_ys<0 AND product LIKE '000%';

pass:加“group by 1”在sql中数据是对的,金额字段加nvl(amt,0)数据也是对的。

此问题已反馈给ORACLE,后续有结果再补充。

ORACEL12c求和SUM(a+b)与SUM(a)+SUM(b)结果不一致问题的更多相关文章

  1. leetcode 560. Subarray Sum Equals K 、523. Continuous Subarray Sum、 325.Maximum Size Subarray Sum Equals k(lintcode 911)

    整体上3个题都是求subarray,都是同一个思想,通过累加,然后判断和目标k值之间的关系,然后查看之前子数组的累加和. map的存储:560题是存储的当前的累加和与个数 561题是存储的当前累加和的 ...

  2. python 中的sum( )函数 与 numpy中的 sum( )的区别

    一. python sum函数 描述: sum() 对序列进行求和 用法: sum(iterable[, start]) iterable:可迭代对象,例如,列表,元组,集合. start:指定相加的 ...

  3. 1. Two Sum + 15. 3 Sum + 16. 3 Sum Closest + 18. 4Sum + 167. Two Sum II - Input array is sorted + 454. 4Sum II + 653. Two Sum IV - Input is a BST

    ▶ 问题:给定一个数组 nums 及一个目标值 target,求数组中是否存在 n 项的和恰好等于目标值 ▶ 第 1题,n = 2,要求返回解 ● 代码,160 ms,穷举法,时间复杂度 O(n2), ...

  4. [HEOI2016]求和 sum

    [HEOI2016]求和 sum 标签: NTT cdq分治 多项式求逆 第二类斯特林数 Description 求\[\sum_{i=0}^n\sum_{j=0}^i S(i,j)×2^j×(j!) ...

  5. oracle累积求和分析函数sum over的使用

    oracle sum()over函数的使用 over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用. over函数的参数:over(partit ...

  6. HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description   Sample Input 2 Sample Outp ...

  7. sum() 求和用法

    def func(*args): # sum = 0 # for el in args: # sum += el # return sum return sum(args) # sum() 求和 de ...

  8. 307. Range Sum Query - Mutable查询求和的范围(可变)

    [抄题]: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inc ...

  9. 水晶报表分组,统计,求和,sum()函数使用

    --Sum()函数统计的是明细所有的和 Sum(字段名) --根据分组字段统计的和 Sum ({xh_Getdinggoudan;1.Djine} ,{xh_Getdinggoudan;1.Ddgda ...

随机推荐

  1. iOS中级篇 - dispatch_semaphore(信号量)的理解及使用

    理解这个概念之前,先抛出一个问题 问题描述: 假设现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢? 没错,这里,我们就可以方便的利用信号量来解决这个问题. ...

  2. 转载 C#文件上传

     一.分析 本次博客,主要解决文件上传等一系列问题,将从两方面来论述,即1G以内文件和1G以上文件. 对于上传1G以内的文件,可以采用基本的三种上传方法:用Web控件FileUpload.html控件 ...

  3. Python 购物车----之用户部分

    知识点: 文件读,写操作,if 判断, for 循环 salary = input("输入你的工资:") bought_list = [] product_list = {} wi ...

  4. 选择Blobs (Evision)

    C++ // Sort by decreasing area Blobs.SortObjectsUsingFeature(OBJ_AREA, OBJ_SORT_DESCENDING); // Enum ...

  5. IntelliJ IDEA中类似Eclipse自动补全变量名称和属性名称的快捷键

    IntelliJ IDEA 默认快捷键模式下 自动补全变量名称 : Ctrl + Alt + v 自动补全属性名称 : Ctrl + Alt + f

  6. SpringMVC Memcached 搭建WEB项目缓存框架

    最近做的项目一直在使用memcached作为缓存来缓存各种数据,现在BOSS要在项目上加上缓存.并把任务交给我.便琢磨怎么解决这个问题. 看了很多文章,写的比较详尽靠谱的就是这篇了http://www ...

  7. RelativeLayout各个属性

    android:layout_above="@id/xxx"  --将控件置于给定ID控件之上 android:layout_below="@id/xxx"  ...

  8. json的细节

    之前一直纳闷为什么在js里直接写的json数据可以不用eval()直接解析,而后台传入ajax的json数据需要eval()一下才能解析 原来是我没搞清楚json格式字符串跟json对象 var te ...

  9. New : HTML5 中的新标签

    基础 标签 描述 <!DOCTYPE>  定义文档类型. <html> 定义 HTML 文档. <title> 定义文档的标题. <body> 定义文档 ...

  10. MyBatis学习-映射文件标签篇(select、resultMap)

    MyBatis 真正的核心在映射文件中.比直接使用 JDBC 节省95%的代码.而且将 SQL 语句独立在 Java 代码之外,可以进行更为细致的 SQL 优化. 一. 映射文件的顶级元素 selec ...