2012-10-31 131 views
0

我有這兩個表:查詢不減去正確

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。數字值存儲爲數字數據類型。我在這裏錯過了什麼?

+0

好像這是隱含的,但做TAB_A和TAB_B恰好有一個行(一個顯示)? –

+0

是的。兩個表都只有一行。這是一項批量工作。表格每次都會被截斷。 – Chris

+0

這似乎很奇怪。有一點需要注意的是949324-926268 = 2 * 11528。換句話說,計算出的tab_c.p4 = tab_b.p4-11528。並且tab_c.p4 = tab_a.p4-2 * 11528。 –

回答

0
SELECT SYSDATE ,A.P4, B.P4, A.P4-B.P4 
FROM TAB_A A,TAB_B B 
WHERE A.MYDATE=B.MYDATE 

確保P4值是你所期望的......

0

試試這個:

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)