Java 用另一个表中的金额总和减去一个表中的金额总和
我得到了错误的sql结果,该结果的金额为双负值 我想用另一张表的金额总和减去一张表的金额总和 这是Java 用另一个表中的金额总和减去一个表中的金额总和,java,sql,Java,Sql,我得到了错误的sql结果,该结果的金额为双负值 我想用另一张表的金额总和减去一张表的金额总和 这是bet\u tbl(第一个表)数据。只勾选下注号码“11”。赌注总额为2000英镑。见下文 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
bet\u tbl
(第一个表)数据。只勾选下注号码“11”。赌注总额为2000英镑。见下文
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`
bet\u tbl
:
这是恢复\u tbl
(第二个表)数据。recover\u tbl
的金额总和为100
见下文
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`
最后的结果是我想得到减去bet\u tbl.amount
和recover\u 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`
以下是运行查询后的结果
[结果]:
我找不到哪里出错了。我陷入了困境,需要帮助。谢谢你的建议和回答。如果你只想下注。下注号码='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`
尝试在
bet\u Number
或Max(bet\u Number)
前面添加Distinct
子句,这样做将产生1800个。这是因为聚合是在加入后执行的。
你知道有两个记录,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\u tbl减去金额之前,需要在表bet\u 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
无法查看您的表格或结果,请担心kevinm。当我发布此问题时,我上传的图片失败