select a,sum(decode(sign(b),-1,d*c,1,b*c)) from table group by a
select a,sum(decode(sign(b),-1,d*c,1,b*c)) from table group by a
你需要把SUM放到外面来select a, sum(case when b<0 then d*c when b>0 then b*c end) from table group by a
其实Oracle已经提示你了,你把Sum放到里边,那么外边你的Select List中就出现了在聚集函数以外的字段,那么在你用到了聚集函数时,这个字段也必须进行分组。 你写到里边后,最终的SQL语句类似 select a,b from table group by a; 这很明显你也知道不对,只不过 b 处现在换成了另外一个包含 b 字段的表达式而已
sum(case when b<0 then d*c when b>0 then b*c end)
from table
group by a
你写到里边后,最终的SQL语句类似
select a,b from table group by a;
这很明显你也知道不对,只不过 b 处现在换成了另外一个包含 b 字段的表达式而已