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 に答える