表A(ID,hsource,name)数据类型(int,varchar(100),varchar(100))
   ID  hsource         name
   1   34,123,98,87     a
   2   56,98,2,1        a
   ... ...            .... 
求各name的hsource平均值。

解决方案 »

  1.   

    select avg(hsource) from t group by name
      

  2.   


        create function f_tb(@str varchar(8000))  
        returns @tb table([平均值] varchar(20))  
        as  
        begin  
               while charindex(',',@str)>0  
               begin  
                     insert @tb  
                     select left(@str,charindex(',',@str)-1)  
                     set @str=stuff(@str,1,charindex(',',@str),'')  
               end  
               insert @tb select @str  
               return  
        end  
        go  
        declare @str varchar(8000)  
        set @str=select hsource from 表A
        select name as 名称,avg(select avg(平均值) from f_tb(@str) ) as 平均值 from 表A group by name
      

  3.   

    create   function   f_split(@c   varchar(2000),@split   varchar(2)) 
    returns   @t   table(col   varchar(20)) 
    as 
      begin     while(charindex(@split,@c) <> 0) 
          begin 
            insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1)) 
            set   @c   =   stuff(@c,1,charindex(@split,@c), ' ') 
          end 
        insert   @t(col)   values   (@c) 
        return 
      end 
    go
    select (select avg(convert(float,col)) from dbo.f_split(hsource, ',')) hsource,name from A
      

  4.   

    先拆分hsource字段的值了,然后在进行累加计算了。2楼的方法比较好了
      

  5.   

    不是很明白你的写法,以前从来没有接触过,比如说从表中选择直接是from表A,还有我赋值你的代码执行的时候出错了,我也不知道怎么改,所以就没采用你的方法,如果你有时间可以给我讲得详细些么?