Oracle SQL - 添加两个联合查询

时间:2016-02-15 14:16:00

标签: sql oracle union

我必须查询我正在应用联合函数。

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

如果两个查询中的item和loc相同,则两个查询的qty应该在最终结果中相加。

我们如何实现这一目标?

2 个答案:

答案 0 :(得分: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 :(得分: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对将组合在一起,并将相应的数量相加。