表如下所示
table:no(number)              time(date)                                data(number)1                     2013 - 07 -24 00:10:00                           10
2                     2013 - 07 -24 00:20:00                           20
1                     2013 - 07 -24 00:30:00                           40
2                     2013 - 07 -24 00:40:00                           60
3                     2013 - 07 -24 00:50:00                           70
3                     2013 - 07 -24 00:60:00                           60
需求:
1、自定义一个oracle聚合函数,其中将"no"、"time"、"data"作为参数传入
2、求每一个“编号”(这里编号有三个分别为1、2、3)最近时间内的“data”值并求和,返回一个number类型的值。Oracle自定义聚合函数自定义聚集函数函数

解决方案 »

  1.   

    create  function xx(参数)
    return number as   
      v_n number ;  
      v_data number ;
    begin   
      select no,sum(data) into v_n,v_data from table where no=参数,, group by no;   
       return v_data;    
    exception    
      when no_data_found then   
        raise_application_error(-20001, 'xxxxx');    
    end ;   
             
     大致这样吧!
      

  2.   

    一个简单sql的时候,还自定义函数干嘛呢
      

  3.   

    由于项目业务种种限制 必须要用oralce自定义聚合函数 您看看你能想想吗 谢谢了。
      

  4.   

    由于项目其他业务的限制(这里就不说了)必须要用到oralce自定义聚合函数。
      

  5.   

    1、首先 聚合函数可以接受多行值并进行运算 例如系统自带sum avg ,
             2、其次您没有仔细看需求,每个编号最近时间内的data值  比如编号1 最近时间内的值为 10 以此类推 编号2为20 编号3为70 然后对他们求和 返回。