2012-09-18 4 views
0

ID와 해당 값이 포함 된 테이블이 있습니다. 각 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의 각 고유 값 I 컴퓨팅 행 현명한 승산. 에 해당 값을 곱한 후 결과를 ID 및 해당 결과를 표시하도록 얻으려고합니다. ID 4 오/P 30 ID 1, O/P ID 2 -30

  • 오/P 0

  • 위한

    나는 tr 커서를 구현하지만 어떤 아이디어도 얻지 못한다.

  • 답변

    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) 
    
    관련 문제