Num ObservTimes       R                                    
---------- ------------ --------------------- 
57      200608311610 01000000000000000000
58      200608311610 02000000000000000000
38      200608311610 05000000000000000000
我要求的是把[R]的前10个数据的和大于2
结果为:
Num     ObservTimes       R                                    58      200608311610      2
38      200608311610      5
select StationNum, ObservTimes,ADO.MINADD(substring([R],1,10)) from tabrealtimedata where  ObservTimes ='200608311610' having ADO.MINADD(substring([R],1,10)) >=2ADO.MINADD(STR)为我已经写的求和函数怎么having不了?

解决方案 »

  1.   

    ---在没有使用group by语句的情况下是不能使用having的,你为什么不用where??
    ---试下面的例子,如果只是要前10个数据的和大于2,则在While语句的条件中加@i<2 and ------------------------
    create table #(num int,ObservTimes varchar(30),R varchar(100))
    insert into # select 57,'200608311610','01000000000000000000' union all select 
    58,'200608311610','02000000000000000000' union all select 
    38,'200608311610','05000000000000000000'
    go
    create function dbo.f_test(@s varchar(10))
    returns int
    as
    begin
      declare @i int
      set @i=0
      while len(@s)>0 begin
        select @i=@i+substring(@s,1,1)
        set @s=stuff(@s,1,1,'')
      end
     RETURN(@i)
    end
    go
    --
    select *,num=dbo.f_test(R) from # where dbo.f_test(R)>=2