Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用另一个表中的金额总和减去一个表中的金额总和_Java_Sql - Fatal编程技术网

Java 用另一个表中的金额总和减去一个表中的金额总和

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

我得到了错误的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
  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。当我发布此问题时,我上传的图片失败