我有一个包含id及其各自值的表。我要乘以每个id的相应值。
CREATE TABLE mult_tbl(
id NUMBER,
val number
);
insert all
into mult_tbl values (1,2)
into mult_tbl values (1,3)
into mult_tbl values (1,5)
into mult_tbl values (2,2)
into mult_tbl values (2,0)
INTO mult_tbl VALUES (1,-1)
into mult_tbl values (4,10)
into mult_tbl values (4,3)
select * from dual;
我如何为id 的每个唯一值计算行方式乘法。 我试图在输出后将输出显示为id及其各自的结果 相应的值。
对于id 1,o / p -30
对于id 2,o / p 0
对于id 4,o / p 30
我正在尝试实现游标,但没有任何想法。
答案 0 :(得分:0)
也许这可以帮助
select id,
case
when zer=1 then 0
when neg=1 then -prd
else prd
end prd
from (
select id, exp(sum(ln(abs(decode(val,0,1,val))))) prd
from mult_tbl
group by id
) left join (
select id,
count(decode(val,0,val)) zer,
mod(count(nullif(val,0)),2) neg
from mult_tbl where val<=0
group by id
) using(id)