2013-07-04 100 views
0

我得到了錯誤的sql結果,其中有雙倍的負值。從一個表中減去另一個表中的金額總和

我想從一張表中減去另一張表中金額的總和。

這是bet_tbl(第一表)數據。只檢查bet_Number「11」。 bet_tbl的金額總和爲2000.請參見下文。

bet_tbl

enter image description here

這是recover_tbl(第二表)數據。 recover_tbl的總金額爲100.

請參閱下面的內容。

enter image description here

最終結果我想recover_tbl.Amount減去bet_tbl.Amount後能得到數量的總和1900.But我得到了1800,當我跑下以下query.See。

select 
    `bet_Number`, 
    SUM(bet_tbl.`Amount`) - SUM(recover_tbl.`Amount`) AS 'AMOUNT' 
from bet_tbl, recover_tbl 
WHERE bet_tbl.status= recover_tbl.status 
    AND bet_tbl.`bet_Date`=recover_tbl.`recover_Date` 
    AND bet_tbl.status = '0' 
    AND bet_tbl.`bet_Date`='2013-07-02' 
GROUP BY bet_tbl.`bet_Number` 

以下是運行查詢後的結果。

[結果]:

enter image description here

我找不到在哪裏我wrong.I'm停留在此,需要一個help.Thank的任何建議和解答。

+0

不能看到你的表或你的結果 – kevinm

+0

對此深感抱歉kevinm.My上傳PIC而我張貼這個問題是失敗的 – aungminthu

回答

0

如果只想bet_tbl.bet_Number = '11',你缺少它在哪裏

select 
    `bet_Number`, 
    SUM(bet_tbl.`Amount`) - SUM(recover_tbl.`Amount`) AS 'AMOUNT' 
from bet_tbl, recover_tbl 
WHERE bet_tbl.status= recover_tbl.status 
    AND bet_tbl.`bet_Date`=recover_tbl.`recover_Date` 
    AND bet_tbl.status = '0' 
    AND bet_tbl.`bet_Date`='2013-07-02' 
    and bet_tbl.bet_Number = '11' 
GROUP BY bet_tbl.`bet_Number` 
0

嘗試加入在bet_NumberMax(bet_number)

1

你正在做它的方式前Distinct條款將產生1800.這是因爲聚合是在加入後執行的。 你知道有兩個記錄有11個bet_number和1000個金額。因此,與另一臺連接會使兩個記錄...

bet_number   bet_tbl.Amount   recover_tbl.Amount 
11     1000      100 
11     1000      100 

現在聚集,將一代產量

bet_number   SUM(bet_tbl.Amount)  SUM(recover_tbl.Amount) 
11     2000      200 

,因此結果是2000 - 200 = 1800

你需要讓聚集在bet_tbl表中,然後用recover_tbl減去金額。喜歡的東西

SELECT 
T1.* 
FROM 
(
    select 
    bet_number, 
    SUM(Amount) Amount 
    FROM 
    bet_tbl 
    WHERE 
    bet_tbl.status = '0' 
    bet_tbl.bet_Date ='2013-07-02' 
    Group by bet_number 
) T1 
JOIN recover_tbl T2 
ON T1.bet_number = T2.recover_number 
相關問題