Oracle SQL-添加两个联合查询

Oracle SQL-添加两个联合查询,sql,oracle,union,Sql,Oracle,Union,我必须处理我正在应用联合函数的查询 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

我必须处理我正在应用联合函数的查询

  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

只需按分组:

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

相同的
项目,loc
对将分组在一起,并汇总其相应数量

样本数据和期望的结果将阐明您想要做什么。分组成功了!这里使用“union”有一个普遍的缺陷,因为它跳过了第二个查询中已经是第一个查询的一部分的行。为此,您必须使用“联合所有人”。答案中已经提到了所需的分组,因此我跳过这里。两个表中的item+loc是唯一的还是我可以在其中一个表中找到一个item+loc的多行?
union
将删除两个表之间的重复行。所以他们不会被计算两次——我想——这是伊姆兰想要的——伟大的答案,与工会结合,而不是简单的工会,解决了我的挑战。