我必须查询我应用的联合功能。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