救命啊,求一个算法,望高手指点。

HeyMystyle 2010-12-15 01:58:24
<%Response.Charset = "gb2312"
midubs = CDbl(Application("midubs"))
imei = Trim(request("imei"))
td = Trim(request("td"))
sd = DateAdd("d", -2, Now())'两天前的当前时间

sql = "select time1, c"&td&" from tbRealData where imei='"&imei&"' and time1 > '"&sd&"' ORDER BY time1"
Set rs = conn.Execute(sql)
rs.movefirst
timestart = sd
i = 0
Do While Not rs.EOF
temp = rs(0)
If rs(1)>1 Then
cc = (FormatNumber(rs(1) * midubs, 1, -1) -1) * 10
If cc>10 Then
cc = 10
Else
cc = cc
End If
Else
cc = (FormatNumber(rs(1) * midubs, 1, -1))
End If
If temp< DateAdd("n", 4 * i, timestart) Then
rs.movenext
ElseIf temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart) Then
If i = 0 Then
MyCstr = cc
Else
MyCstr = MyCstr &","& cc
End If
i = i + 1
rs.movenext
ElseIf temp>= DateAdd("n", 4 * i + 4 , timestart) Then
If i = 0 Then
MyCstr = -1
Else
MyCstr = MyCstr &","& -1
End If
i = i + 1
End If
If i>= 720 Then
rs.movelast
End If
Loop

If i<719 Then
For j = i To 719
If j<1 Then
MyCstr = -1
Else
MyCstr = MyCstr&",-1"
End If
Next
End If
rs.Close
Set rs = Nothing
%>
我现在取的是 temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart) 范围内的第一个记录,这个范围内有8条记录
现在有状况这个范围的第一个记录是-1,有可能这个范围内其他记录不等于-1, 要这个范围的记录都等于-1,cc才等于-1,只要有一个点不等于-1的话,cc就等于当前记录
...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我是ASP新手累死也写不出来!
HeyMystyle 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xming4321 的回复:]
条件是是sqlserver

select
cc = case when (select count(*) from 表 where cc=-1 And temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart)) > =8 then -1
else "cc"
end
……
[/Quote]
能不能帮我写出来一下呢,我现在脑壳都是昏的,小弟感激不尽。拜谢...
十一文 2010-12-15
  • 打赏
  • 举报
回复
条件是是sqlserver

select
cc = case when (select count(*) from 表 where cc=-1 And temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart)) > =8 then -1
else "cc"
end
,
time
from


where
temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart)


大致是这样吧

你根据这个思想改吧
HeyMystyle 2010-12-15
  • 打赏
  • 举报
回复
tbRealData 有2880条记录 每隔4分钟取4分钟内的任意一条记录(4分钟内有8条记录)前提是只要范围内的所有记录的值只要有一条记录值不等于-1,CC就等于当前记录值,要这个范围内的8条记录的值都是-1的话那么CC就等于-1
十一文 2010-12-15
  • 打赏
  • 举报
回复
其实一条sql能搞定你这个的
等哈 我写一个看看
HeyMystyle 2010-12-15
  • 打赏
  • 举报
回复
temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart)
范围内的所有记录的值只要有一条记录值不等于-1("-1"就当前记录的值)就等于当前记录的值CC就等于当前记录值,要这个范围内的8条记录的值都是-1的话那么CC就等于-1
十一文 2010-12-15
  • 打赏
  • 举报
回复
楼主 你就说你要查询什么

查询的条件是什么

数据的结构是什么

要得到一个什么结果

HeyMystyle 2010-12-15
  • 打赏
  • 举报
回复
我现在取的是 temp>= DateAdd("n", 4 * i, timestart) And temp<DateAdd("n", 4 * i + 4, timestart) 4分钟范围内的第一个记录cc



这样的方法要不的,在这个范围内有8条记录,但是有可能这个范围内其他记录不等于-1,现在要在这个4分钟范围的8条记录都等于-1,cc才等于-1,只要有一个点不等于-1的话,cc就等于当前记录
最后就形成了是MyCstr这个数组了!明白了吗?
十一文 2010-12-15
  • 打赏
  • 举报
回复
你到底要干什么??

没看明白

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧