我有三张桌子:
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_Id
是Bank_Account
的主键,Pay_Id
的{{1}}和Payment
的{{1}}也是如此。在Expense_Id
Expense
时Bank_Account
为Pay_Id
为空,反之亦然。现在我想用Expense_Id
来计算公司的利润。那么我该如何使用SQL脚本来计算(Bank_Account
基于金额的总和 - 基于Pay_Id
金额的总和。
答案 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