我遇到了SUM
声明的问题。
此查询返回MY_ID = 1
和QTY = 7
select my_id, sum(qty) qty
from
(
select 1 my_id ,2 qty from dual
union
select 1 my_id, 5 qty from dual
)
group by my_id;
但是这个会返回MY_ID = 1
和QTY = 5
而不是QTY = 10
。
select my_id, sum(qty) qty
from
(
select 1 my_id ,5 qty from dual
union
select 1 my_id, 5 qty from dual
)
group by my_id;
如果两个值相同,如何汇总两个数量?
答案 0 :(得分:2)
尝试使用union all: 以下作品:
select my_id, sum(qty) qty
from
(
select 1 my_id ,5 qty from dual
union all
select 1 my_id, 5 qty from dual
)
group by my_id;
这是因为5 union 5总是5.如果你联合所有它包括所有东西,无论它是否相同!
答案 1 :(得分:2)
使用union all:
select my_id, sum(qty) qty
from
(
select 1 my_id ,5 qty from dual
union all
select 1 my_id, 5 qty from dual
)
group by my_id;
答案 2 :(得分:1)
在第二个查询中,union中的两行是相同的。
UNION有两种形式:UNION ALL和UNION DISTINCT。哪一个是默认值会有所不同,但看起来您正在获得UNION DISTINCT,因为两个(1,5)行相同只返回其中一个。将其更改为:
select my_id, sum(qty) qty
from
(
select 1 my_id ,5 qty from dual
union ALL
select 1 my_id, 5 qty from dual
)
group by my_id;
这应该给你你想要的东西:(1,10)。
编辑:简单地说我在查询中有联合DISTINCT,这是错误的!现在纠正了......