2012-09-11 67 views
2

我有2個表結合兩個表,並添加量

warehouse_1

item qty 
-------- 
3001 1 
3003 3 
3004 1 
3006 2 

warehouse_2

item qty 
---------- 
3001 2 
3002 3 
3006 3 
3008 6 

我想聯盟這兩個表到第三和添加的數量像這樣的相同物品

warehouse_3

item qty 
----------- 
3001  3 
3002  3 
3003  3 
3004  1 
3006  5 
3008  6 

我怎樣才能實現這與SQL Server?

+0

順便說一句哪個SQL? (SQL Server,MySQL等) – hims056

+0

微軟SQL服務器 – decapo

回答

4

可以使用UNION實現它。首先你必須聯合所有數據(兩個表)和使用子查詢,你可以使用GROUP BY分組,並使用SUM函數添加總數。

SELECT Item, SUM(qty) as Qty FROM 
(
    SELECT Item, qty FROM warehouse_1 
    UNION 
    SELECT Item, qty FROM warehouse_2 
) as a 
GROUP BY item; 

查看更多有關UNION

查看更多有關GROUP BY條款:(您也可以找到有關SUM那裏。)

+1

謝謝,它適用於所有除了一個奇怪的項目,所以我不得不使用聯盟所有和工作 – decapo

0

請嘗試:

select item,sum(qty) from(
    select item, Qty from warehouse_1 
    UNION 
    select item, Qty from warehouse_2 
)x 
group by item 
0
CREATE OR REPLACE VIEW warehouse_3 as 
    SELECT coalesce(w1.item,w2.item) as item, w1.qty+w2.qty as qty 
    FROM warehouse_1 as w1 
    OUTER JOIN warehouse_2 as w2 
    ON w1.item = w2.item; 

假設項目是獨一無二的。 coalescenvl在一些數據庫中。 然後你可以撥打:

select * from warehouse_3; 

它會返回總和。

此外,如果你改變一些數量的W1或W2將在W3

自動修正
+0

這不會顯示項目只存在於其中一個倉庫。你需要一個完整的外連接... – sybkar

+0

你是對的@sybkar我會編輯我的文章。 –

0

你可以試試這個

SELECT item , SUM(qty) 
FROM (
    SELECT item, qty 
    FROM warehouse_1 
    UNION 
    SELECT item, qty 
    FROM warehouse_2 
) AS U GROUP BY item 
0

試試這個:

create table tbl1(item int,qty int) 
INSERT INTO tbl1 
VALUES(3001,1),(3003,3),(3004,1),(3006,2) 

create table tbl2(item int,qty int) 
INSERT INTO tbl2 
VALUES(3001,2),(3002,3),(3006,3),(3008,6) 


select isnull(t1.item,t2.item) as item,isnull(t1.qty,0)+isnull(t2.qty,0) as qty from tbl1 t1 full outer join tbl2 t2 on t1.item =t2.item 
order by 1