MySQL特定列添加

时间:2016-03-17 09:01:00

标签: mysql

我有三张桌子:

Bank_Account(Tran_Id, Pay_Id, Expense_Id, Amount, Balance) 
Payment(Pay_Id, Client_Id, Date_Payment, Amount) 
Expense(Expense_Id, Emp_Id, Amount, Expense) 

其中Tran_IdBank_Account的主键,Pay_Id的{​​{1}}和Payment的{​​{1}}也是如此。在Expense_Id ExpenseBank_AccountPay_Id为空,反之亦然。现在我想用Expense_Id来计算公司的利润。那么我该如何使用SQL脚本来计算(Bank_Account基于金额的总和 - 基于Pay_Id金额的总和。

4 个答案:

答案 0 :(得分:0)

我认为,这应该是你的陈述,但我想,你错过了一个要在你的Bank_Account表(即公司)中分组的字段。 你想知道,公司的金额,还是?

SELECT <missingFieldCompany>, SUM(Payment.Amount) as Payments, SUM(Expense.Amount) as Expenses, SUM(Payment.Amount) - SUM(Expense.Amount) as Overall
FROM Bank_Account 
LEFT JOIN Payment ON Payment.Pay_Id = Bank_Account.Pay_Id
LEFT JOIN Expense ON Expense.Expense_Id = Bank_Account.Expense_Id
GROUP BY <missingFieldCompany>

答案 1 :(得分:0)

试试这个:

select 
    SUM(Amount * (Pay_Id IS NOT NULL)) AS PayIdAmt,
    SUM(Amount * (Expense_Id IS NOT NULL)) AS ExpenseIdAmt
FROM Bank_Account

答案 2 :(得分:0)

SELECT SUM(p.Amount) as payments, SUM(e.Amount) as expenses,  
SUM(p.Amount) - SUM(e.Amount) as total_amount
FROM Bank_Account as b
LEFT JOIN Payment as p ON p.Pay_Id = b.Pay_Id
LEFT JOIN Expense as e ON e.Expense_Id = b.Expense_Id

答案 3 :(得分:0)

在下面尝试更多信息后,查询工作对我来说.....

选择     (b2.total2 - b1.total1)为总数 从 (选择SUM(金额)为Bank_Account中的total1,其中Pay_Id为NULL)b1,(SELECT SUM(金额)为Bank_Account中的total2,其中Pay_Id为非NULL)b2

相关问题