Sql 查询的减法不正确

Sql 查询的减法不正确,sql,oracle10g,Sql,Oracle10g,我有两张桌子: SQL> SELECT * FROM TAB_A; MYDATE P4 D1 D2 P5 P6 --------- ---------- ---------- ----------- ----------- ----------- 30-OCT-12 949,324 4,437,654 10,203,116 25,303,632 13,900,078 SQL> SELECT * FROM T

我有两张桌子:

SQL> SELECT * FROM TAB_A;
MYDATE        P4         D1      D2      P5      P6
--------- ---------- ---------- ----------- ----------- -----------
30-OCT-12    949,324  4,437,654  10,203,116  25,303,632  13,900,078


SQL> SELECT * FROM TAB_B;
MYDATE        P4         D1      D2      P5      P6
--------- ---------- ---------- ----------- ----------- -----------
30-OCT-12    937,796  4,388,477  10,091,811  25,028,402  13,755,882
我需要减去它们各自的列,并将结果存储到第三个表中,如下所示:

SQL> INSERT INTO TAB_C (MYDATE, P4) SELECT SYSDATE,A.P4-B.P4 FROM  TAB_A A,TAB_B B WHERE A.MYDATE=B.MYDATE;

SQL> SELECT * FROM TAB_C;
MYDATE        P4         D1      D2      P5      P6
--------- ---------- ---------- ----------- ----------- -----------
30-OCT-12     926,268
结果是错误的。基础数学:
949324-937796=11528
。数值存储为数字数据类型。我错过了什么

SELECT SYSDATE ,A.P4, B.P4, A.P4-B.P4 
FROM  TAB_A A,TAB_B B 
WHERE A.MYDATE=B.MYDATE
确保p4值符合您的预期…

尝试以下方法:

INSERT INTO TAB_C (MYDATE, P4)
VALUES (SYSDATE, SELECT (A.P4-B.P4) FROM  TAB_A A, TAB_B B WHERE A.MYDATE=B.MYDATE)

似乎这是隐含的,但TAB_A和TAB_B是否正好有一行(显示的那一行)?是的。两个表都只有一行。这是一个批量作业。表每次都会被截断,这看起来确实很奇怪。需要注意的是949324-926268=2*11528。换句话说,计算出的tab_c.p4=tab_b.p4-11528。tab_c.p4=tab_a.p4-2*11528.
tab_c
上有触发器吗?它可能在做些什么来更改插入的值吗?