乘以相应id字段的列值

时间:2012-09-18 09:48:49

标签: 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 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

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

1 个答案:

答案 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)