我必須查詢我應用的聯合功能。Oracle SQL - 添加兩個聯合查詢
select item, loc, qty from rms_transfer
union
select item, loc, qty from sim_transfer
無論項目和loc在兩個查詢中都是相同的,這兩個查詢的數量應該加在最終結果中。
我們如何實現這一目標?
我必須查詢我應用的聯合功能。Oracle SQL - 添加兩個聯合查詢
select item, loc, qty from rms_transfer
union
select item, loc, qty from sim_transfer
無論項目和loc在兩個查詢中都是相同的,這兩個查詢的數量應該加在最終結果中。
我們如何實現這一目標?
我想你想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
只是做一個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
雙將組合在一起,他們的相應數量將被總結。
'union'將刪除兩個表之間的重複行。所以他們不會被計算兩次,這是 - 我認爲 - 什麼是伊姆蘭想要的 –
樣本數據和期望的結果將闡明你想要做什麼。 –
分組合作!並給出正確的結果。 –
在這裏使用'union'存在一個普遍的缺陷,因爲它從第二個查詢中跳過了已經是第一個查詢的一部分的行。你必須爲此使用'union all'。答案中已經提到了所需的分組,因此我在此跳過。 – wumpz