SQL> create table mean_value_A(mean_time date,mean_value1 number,
  2  mean_value2 number,mean_value3 number,mean_value4 number,mean_value5 number);Table created.SQL> insert into mean_value_a values(sysdate,11,22,33,0,0);1 row created.SQL> insert into mean_value_a values(sysdate,0,22,33,44,0);1 row created.SQL> insert into mean_value_a values(sysdate,0,0,0,0,55);1 row created.SQL> commit;Commit complete.SQL> select * from mean_value_a;MEAN_TIME MEAN_VALUE1 MEAN_VALUE2 MEAN_VALUE3 MEAN_VALUE4 MEAN_VALUE5
--------- ----------- ----------- ----------- ----------- -----------
03-APR-04          11          22          33           0           0
03-APR-04           0          22          33          44           0
03-APR-04           0           0           0           0          55SQL> select mod(decode(mean_value1,0,'',1)||decode(mean_value2,0,'',2)||decode(mean_value3,0,'',3)
  2  ||decode(mean_value4,0,'',4)||decode(mean_value5,0,'',5),10) last_num from mean_value_a; LAST_NUM
---------
        3
        4
        5SQL>

解决方案 »

  1.   

    declare
    v_i number;
    cursor cur_sor 
    is
    select * from mean_value_a;
    begin
    for cur in cur_sor loop
    select mod(decode(cur.mean_value1,0,'',1)||decode(cur.mean_value2,0,'',2)||decode(cur.mean_value3,0,'',3)
      2  ||decode(cur.mean_value4,0,'',4)||decode(cur.mean_value5,0,'',5),10) into v_i from dual;
    dbms_output.put_line(to_char(v_i));
    end loop;
    end;
      

  2.   

    顶下先,
    睡觉回来再好好项一下。
    楼上的
    select mod(decode(cur.mean_value1,0,'',1)||decode(cur.mean_value2,0,'',2)||decode(cur.mean_value3,0,'',3)
      2  ||decode(cur.mean_value4,0,'',4)||decode(cur.mean_value5,0,'',5),10) 
    我的mean_valuei有太多了,从1到300多,
    怎么写啊?