Plsql 将对应id字段的列值相乘
我有一个包含id及其各自值的表。我必须乘以每个id对应的值Plsql 将对应id字段的列值相乘,plsql,oracle11g,Plsql,Oracle11g,我有一个包含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 m
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
我正在尝试实现游标,但没有任何想法。也许这会有所帮助
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)