2013-07-04 61 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 
相关问题