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不了?
---------- ------------ ---------------------
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不了?
---试下面的例子,如果只是要前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