2016-02-15 123 views
1

我必須查詢我應用的聯合功能。Oracle SQL - 添加兩個聯合查詢

select item, loc, qty from rms_transfer 
    union 
    select item, loc, qty from sim_transfer 

無論項目和loc在兩個查詢中都是相同的,這兩個查詢的數量應該加在最終結果中。

我們如何實現這一目標?

+0

樣本數據和期望的結果將闡明你想要做什麼。 –

+0

分組合作!並給出正確的結果。 –

+0

在這裏使用'union'存在一個普遍的缺陷,因爲它從第二個查詢中跳過了已經是第一個查詢的一部分的行。你必須爲此使用'union all'。答案中已經提到了所需的分組,因此我在此跳過。 – wumpz

回答

2

我想你想union all,不union

select item, loc, qty from rms_transfer; 
union all 
select item, loc, qty from sim_transfer; 

union刪除重複。所以,如果你想保留所有的原始行,然後使用union all

如果你想在同一行的值,那麼你可以使用一個後聚集:

select item, loc, sum(qty) 
from (select item, loc, qty from rms_transfer; 
     union all 
     select item, loc, qty from sim_transfer 
    ) il 
group by item, loc 
1

只是做一個GROUP BY

SELECT item, loc, SUM(qty) AS qty 
FROM (
    SELECT item, loc, qty FROM rms_transfer 
    union 
    SELECT item, loc, qty FROM sim_transfer) AS t 
GROUP BY item, loc 

item, loc雙將組合在一起,他們的相應數量將被總結。

+0

'union'將刪除兩個表之間的重複行。所以他們不會被計算兩次,這是 - 我認爲 - 什麼是伊姆蘭想要的 –