2014-07-22 604 views
-2

我有两个表格,表格A_表格B_B两个表格之间的比较

我想结果如表结果下面,有人可以帮我用SQL查询吗?

表-A

------------------ 
ID ITEM_ID QTY 
------------------ 
1 100  2 
2 101  3 
3 102  5 
4 103  2 
------------------ 

表-B

------------------ 
ID ITEM_ID QTY 
1 100  2 
2 101  4 
3 102  4 
4 104  2 
5 105  1 
------------------ 

结果

------------------ 
ITEM_ID QTY 
100  0 
101  1 
102  -1 
103  -2 
104  2 
105  1 
------------------ 

感谢。

+2

你有什么查询至今? –

+1

您想要创建结果的逻辑是什么?它看起来像是要从table_A中相同商品的数量中减去table_B中商品的数量。是对的吗? –

回答

1

你需要一个完整的加盟或者从表

select 
     isnull(a.item_id,b.item_id) as item_id, isnull(b.qty, 0) - isnull(a.qty, 0) as qty 
    from 
     table_a a 
     full outer join table_b b on a.item_id = b.item_id 
+0

这是作品兄弟...谢谢 – Firdaus

+0

@Firdaus出于好奇,什么工作更快,完整的外部连接,或由一个工会统计两个表显示在我的回复中)? –

+0

我没有大型的数据库记录来证明什么是最快的方法...... :) – Firdaus

0
select item_id, sum(qty) 
    from (select item_id, qty 
      from table_b 
     union all 
     select item_id, -qty 
      from table_a) x 
group by item_id 
order by item_id 
+0

@weenoid这将包括来自一个但不是两个表的项目。 –

+0

创造性的解决方案。我不确定它的规模有多好。 – paqogomez

+0

@paqogomez运行需要多长时间? –

0

使用全外连接获得的价值观和一些isnulls

SQL Fiddle Example

select isnull(b.item_id, a.item_id) as ItemID, 
    isnull(b.qty, 0) - isnull(a.qty,0)as Qty 
from table_b b 
full outer join table_a a on a.item_id = b.item_id 
order by itemid 
+0

它的作品两个兄弟...与@JamieA有点不同,但它的作品。 谢谢 – Firdaus