我有两个表insert1
和received1
在insert1表中具有列,列名称为recharge_account
。
收到的表只有一列,列名是received_amount
。
我希望将recharge_ammount - total received_amount
合计为应缴费用。
recharge_Account Received_Amount dues
500 - 400 100
SELECT
SUM(Account_recharge) AS `Total Recharge`,
SUM(Amount_Received) AS `Total Received`,
SUM(Account_recharge) - SUM(Amount_Received) AS dues
FROM insert1 i1
INNER JOIN received1 r1
我无法精确计算。
答案 0 :(得分:1)
您只需要一个连接条件,例如ON i1.id = r1.ins_id
和COALESCE()
函数即可对空值进行操作:
SELECT
SUM(COALESCE(Account_recharge,0)) AS `Total Recharge`,
SUM(COALESCE(Amount_Received,0)) AS `Total Received`,
SUM(COALESCE(Account_recharge,0)) - SUM(COALESCE(Amount_Received,0)) AS dues
FROM insert1 i1
JOIN received1 r1 ON i1.id = r1.ins_id
答案 1 :(得分:0)
我会推荐union all
和group by
:
SELECT SUM(ir.Account_recharge) AS `Total Recharge`,
SUM(ir.Amount_Received) AS `Total Received`,
SUM(ir.Account_recharge) - SUM(ir.Amount_Received) AS dues
FROM ((SELECT Account_recharge, NULL as Amount_Received
FROM insert1 i1
) UNION ALL
(SELECT NULL as Account_recharge, Amount_Received
FROM received1 r1
)
) ir
实际上,CROSS JOIN
也可以工作:
SELECT SUM(i.Account_recharge) AS `Total Recharge`,
SUM(r.Amount_Received) AS `Total Received`,
SUM(i.Account_recharge) - SUM(r.Amount_Received) AS dues
FROM (SELECT SUM(Account_recharge) as Account_recharge
FROM insert1 i1
) i CROSS JOIN
(SELECT SUM(Amount_Received) as Amount_Received
FROM received1 r1
) r;
在这种情况下,关键是您需要在加入 之前进行汇总。
答案 2 :(得分:0)
据我了解,您不需要任何加入。
您可以对每列求和,并在子查询中返回2列以减去它们:
SELECT t.`Total Recharge`, t.`Total Received`,
t.`Total Recharge` - t.`Total Received` AS dues
FROM (
SELECT
(SELECT SUM(Account_recharge) FROM insert1) AS `Total Recharge`,
(SELECT SUM(Amount_Received) FROM received1) AS `Total Received`
) AS t