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
将删除两个表之间的重复行。所以他们不会被计算两次——我想——这是伊姆兰想要的——伟大的答案,与工会结合,而不是简单的工会,解决了我的挑战。