2016-02-15 98 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'将删除两个表之间的重复行。所以他们不会被计算两次,这是 - 我认为 - 什么是伊姆兰想要的 –