今天在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. 间隔Ns请求某函数并且有timeout

    实现方案: 1. 递归调用 2.timer:apply_interval() 3.gen_server来写 时间timeout怎么实现: 1.开始时间存入ets表中 2.put,get方法放入进程字典 ...

  2. 【C#】【SHARE】The registering of global hotkeys

    I remember that when I was still using VB6 sereval years ago, if global hotkeys are required, a mass ...

  3. javascript:;”是什么意思

    就是 执行一段 空白JAVASCRIPT语句 并且返回的也是空或者false值..把 javascript:; 加在超级链接上 就可以防止 链接跳转..从而 可以给 链接的 onclick 方法上 写 ...

  4. 教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师

    作为一个编码12年的工程师老将,讲述整段工程师的往事,顺便把知识都泄露出去,希望读者能少走一些弯路. 这段往事包括:从不会动的静态网页到最流行的网站开发.实现自己的博客网站.在云里雾里的云中搜索.大数 ...

  5. sql的ExecuteScalar(),ExecuteNonQuery()

    一,ExecuteScalar ExecuteScalar()也返回一个int型变量.如果SQL语句是Select查询,则仅仅返回查询结果集中第一行第一列,而忽略其他行和列.如果SQL语句不是Sele ...

  6. tnvm 安装模块不能找到关联模块问题

    export NODE_PATH='/Users/yuqi/.tnvm/lib/node_modules' export PATH='/Users/yuqi/.tnvm/bin':$PATH sour ...

  7. Could not locate executable E:\SoftWave\Hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries解决办法

    需要下载windows版本 bin目录下的文件,替换hadoop目录下原来的bin目录下的文件.下载网址是: https://github.com/srccodes/hadoop-common-2.2 ...

  8. IMAX公司CEO:进军VR产业,打造VR体验中心

    591ARVR资讯网www.591arvr.com报道近日,<财富>杂志采访了IMAX首席执行官理查德·葛尔方(Richar Gelfond),后者谈了谈虚拟现实和IMAX正在打造的VR影 ...

  9. Python快捷键

    IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列. ALT+P  上一个历史输入内容. ALT+N 下一个历史输入内容. IDLE中按F5可以运行代码.

  10. Python网络编程学习_Day10

    一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...