涉及JOINS的SQL问题

Rom*_*ias 1 sql t-sql sql-server aggregate-functions sql-server-2008

我有两个类似布局的表,包括INCOME和EXPENSES.该id列是客户ID.

我需要一个客户TOTAL AMOUNT的结果,总结收入和支出.

Table: Income
| id | amountIN|
+--------------+
| 1  |  a      |  
| 2  |  b      |  
| 3  |  c      |  
| 4  |  d      |  

Table: Expenses
| id | amountOUT|
+---------------+
| 1  |  -x      |   
| 4  |  -z      | 
Run Code Online (Sandbox Code Playgroud)

我的问题是,有些客户只有开支,有些只是收入...所以无法提前知道我需要做的事情 LEFT or RIGHT JOIN.

在上面的例子中,RIGHT JOIN可以解决这个问题,但是如果情况被颠倒(Expenses表上有更多的客户)它就不起作用了.

Expected Result
    | id | TotalAmount|
    +--------------+
    | 1  |  a - x  |  
    | 2  |  b      |  
    | 3  |  c      |  
    | 4  |  d - z  |
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

小智 6

select id, SUM(Amount)
from
(
    select id, amountin as Amount
    from Income
    union all
    select id, amountout as Amount
    from Expense
) a
group by id
Run Code Online (Sandbox Code Playgroud)