2013-10-06 62 views
0

我有2個表的收入和支出。我必須計算費用和收入的總和並計算兩者的差額。選擇一張表中列的總和與另一張表中列的總和的差值

我使用

SELECT (SUM(a.Amount)-(SELECT SUM(i.Amount) 
FROM incomes i GROUP BY i.UserId)) Expense, 
a.UserId FROM amount a GROUP BY a.UserId 

目前還只在收入表用戶ID,所以當我執行查詢,它走的是用戶ID的收入的總和減去每個人的費用。

我需要他們的個人差異。

回答

0

您可以使用子查詢

SELECT (q.Amount - q.Expense) AS `diff` FROM 
(
(SELECT (SUM(a.Amount) 
FROM amount a GROUP BY a.UserId) AS `Amount`, 
(SELECT SUM(i.Amount) 
FROM incomes i GROUP BY i.UserId) AS Expense, 
) q 

:或加入

SELECT (q.Amount - q.Expense) AS `diff` FROM 
(
SELECT SUM(a.Amount) AS `Amount` ,SUM(i.Amount) AS `Expense` 
FROM amount 
JOIN incomes i ON (a.UserId=i.UserId) 
GROUP BY i.UserId 
) q 

或者你可以嘗試FULL OUTER JOIN,因爲它們不存在,但你仍然可以通過使用UNION

做同樣的
SELECT (q.Amount - q.Expense) AS `diff` FROM 
(
(SELECT (SUM(a.Amount) AS `Amount` , NULL AS `Expense` 
FROM amount a GROUP BY a.UserId) 
UNION ALL 
(SELECT NULL AS `Amount`, SUM(i.Amount) AS Expense 
FROM incomes i GROUP BY i.UserId) 
) q 
相關問題