0

我有一个包含 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

我正在尝试实现光标但没有任何想法。

4

1 回答 1

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)
于 2012-09-18T10:40:03.933 回答