sql两个表相减问题

有两个表
A:
id value
1 5
2 30
3 10
4 2
B:
id value
1 3
2 4
我希望上面两个表相减,得到如下数据:
id value
1 2
2 26
3 10
4 2
望大神解答。。

首先把我不确定你的数据库是什么?
其次具体问题具体分析啊,这里只给出参考答案,自己好好思考思考:
SQL Server:
select A.id, isnull(A.value,0)-isnull(b.value,0) as result
from A
full join b on A.id=B.id; --这里采用全联结
ORACLE:
select A.id, nvl(A.value,0)-nvl(b.value,0) as result
from A
full join b on A.id=B.id; --这里采用全联结
其他的数据库不做列举。追问

多谢,分我给了最早回答的了,不好意思。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-30
首先这两个表的表结构要相同,然后就是你所用的数据库支不支持minus

CREATE TABLE lyh_tmp1
AS
SELECT 1 AS ID , 5 AS VALUE FROM dual
UNION ALL
SELECT 2 AS ID , 30 AS VALUE FROM dual
UNION ALL
SELECT 3 AS ID , 10 AS VALUE FROM dual
UNION ALL
SELECT 4 AS ID , 2 AS VALUE FROM dual
;
CREATE TABLE lyh_tmp2
AS
SELECT 1 AS ID , 3 AS VALUE FROM dual
UNION ALL
SELECT 2 AS ID , 4 AS VALUE FROM dual
;
SELECT ID,VALUE
FROM lyh_tmp1
MINUS
SELECT ID,VALUE
FROM lyh_tmp2追问

多谢,分我给了最早回答的了,不好意思。

第2个回答  2014-09-30

用外连接

select a.id,a.value-isnull(b.value,0) from a left join b on a.id=b.id

本回答被提问者采纳
第3个回答  2014-09-30
select a.id,
  --decode函数当b.value为空时,取a.value,其他情况取(a.value-b.value)
  decode(b.value,null,a.value,(a.value-b.value)) 
  from A a,B b 
  --左连接
  where a.id = b.id(+);

追问

多谢,分我给了最早回答的了,不好意思。

第4个回答  2014-09-30
select a.id,a.value-decode(b.value,null,0,b.value) value from a,b where a.id=b.id(+) order by a.id;追问

多谢,分我给了最早回答的了,不好意思。

追答

木的事儿