sql连接两个值为0

时间:2015-05-10 15:20:43

标签: sql join

我在加入两张桌子的内容时遇到了一些麻烦。这是当前的情况,表格应显示为结果

表a

id | income             
----------              
1 | 100                 
2 | 200                 
3 | 300                 
4 | 400                 
5 | 500                 

表b

id | outcome
----------
1 | 10   
2 | 20   
6 | 60   
7 | 70   
3 | 30   

结果表

id | income | outcome | balance
--------------------------------
1  | 100    | 10      | 100-10=90
2  | 200    | 20      | 200-20=180
3  | 300    | 30      | 300-30=270
4  | 400    |  0      | 400-0=400
5  | 500    |  0      | 500-0=500
6  |   0    | 60      | 0-60=-60
7  |   0    | 70      | 0-70=-70
  • 结果表
  • 中的每个id都应该是不明确的
  • 收入和结果应显示在结果表中。如果id不在其中一个表收入或结果应为0
  • 余额栏的计算:收入 - 结果

请提供代码,不要使用声明

where id not in (select id from ...)

因为我正在使用的系统不支持not in语句。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用full outer join

执行您想要的操作
select coalesce(a.id, b.id) as id,
       coalesce(a.income, 0) as income,
       coalesce(b.outcome, 0) as outcome,
       (coalesce(a.income, 0) - coalesce(b.outcome, 0)) as balance
from tablea a full outer join
     tableb b
     on a.id = b.id;

您没有指定数据库。 Full outer join是ANSI标准,并且受大多数数据库的支持。