我得到了错误的 SQL 结果,其中金额有双负值。
我想用另一个表中的金额总和减去一个表中的金额总和。
这是bet_tbl
(第一个表)数据。仅检查bet_Number
“11”。 bet_tbl 的金额总和为 2000。见下文。
bet_tbl
:
这是recover_tbl
(第二个表)数据。 recover_tbl
的金额总和为 100。
见下文。
我想在用 recover_tbl.Amount
减去 bet_tbl.Amount
后得到的最终结果是 1900。但是当我运行以下查询时,我得到了 1800。参见下面。
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`
以下是运行查询后的结果。
[结果]:
我找不到哪里出错了。我陷入困境,需要帮助。感谢任何建议和答案。
最佳答案
您这样做的方式将产生 1800。这是因为聚合是在加入后执行的。 您知道有两条记录,bet_number 为 11,金额为 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
在使用recover_tbl减去金额之前,您需要在表bet_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
关于java - 用另一个表中的金额总和减去一个表中的金额总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17466224/