不知道为什么得不到值!详细代码见内~~~谢谢

QYworld 2002-03-17 07:07:15
set rs=server.createobject("adodb.recordset")
sql="select class_id from class"
rs.open sql,conn,1,1
do while not rs.eof

sql1="select sum(file_weekview) from file where class_id="&rs("class_id")
set total_num=conn.execute(sql1)
weekview_num=total_num(0)

dim total_weekview_num
total_weekview_num=0
total_weekview_num=total_weekview_num+weekview_num

rs.movenext
loop

这样一段代码,最后我想输出total_weekview_num,但<%=total_weekview_num%>根本得不到值

但我发现如果我用rs.recordcount来做统计,随后确能得到total_weekview_num的值

为什么,该怎么做?
...全文
44 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nimweb 2002-03-31
  • 打赏
  • 举报
回复
用两个while 进行累加
while not rs.eof
dim total_weekview_num
total_weekview_num=0
while not rsfile.eof
total_weekview_num=total_weekview_num+weekview_num
rsfile.movenext
wend
response.write total_weekview_num&"<br>"
wend

QYworld 2002-03-31
  • 打赏
  • 举报
回复
我明白了,用Group by是一次性得到这个值,但我是想累加得到这个total_weekview_num的值

如果我用group by的方法,不就相当于重新建立个记录集统计一下吗

问题还是没能解决
tripofdream 2002-03-31
  • 打赏
  • 举报
回复
try
set rs=server.createobject("adodb.recordset")
sql="select sum(file_weekview) AS total,class_id from file where class_id="&rs("class_id")&" Group By class_id"
rs.open sql,conn,1,1
while not rs.eof
response.write rs("total") & "  " & rs("class_id") & "<br>"
rs.movenext
wend

QYworld 2002-03-31
  • 打赏
  • 举报
回复
用 Group by 能解决我这个帖子的问题吗?

现在问题还是没能解决,帮忙~
QYworld 2002-03-31
  • 打赏
  • 举报
回复
看不明白

能不能给个代码,写个说明来解释Group by的用法
tripofdream 2002-03-31
  • 打赏
  • 举报
回复
GROUP BY 子句
指定用来放置输出行的组,并且如果 SELECT 子句 <select list> 中包含聚合函数,则计算每组的汇总值。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。



说明 如果未指定 ORDER BY 子句,则使用 GROUP BY 子句不按任何特定的顺序返回组。建议始终使用 ORDER BY 子句指定具体的数据顺序。


语法
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]

参数
ALL

包含所有组和结果集,甚至包含那些任何行都不满足 WHERE 子句指定的搜索条件的组和结果集。如果指定了 ALL,将对组中不满足搜索条件的汇总列返回空值。不能用 CUBE 或 ROLLUP 运算符指定 ALL。

如果访问远程表的查询中有 WHERE 子句,则不支持 GROUP BY ALL 操作。

group_by_expression

是对其执行分组的表达式。group_by_expression 也称为分组列。group_by expression 可以是列或引用列的非聚合表达式。在选择列表内定义的列的别名不能用于指定分组列。



说明 text、ntext 和 image 类型的列不能用于 group_by_expression。


对于不包含 CUBE 或 ROLLUP 的 GROUP BY 子句,group_by_expression 的项数受查询所涉及的 GROUP BY 列的大小、聚合列和聚合值的限制。该限制从 8,060 字节的限制开始,对保存中间查询结果所需的中间级工作表有 8,060 字节的限制。如果指定了 CUBE 或 ROLLUP,则最多只能有 10 个分组表达式。

CUBE

指定在结果集内不仅包含由 GROUP BY 提供的正常行,还包含汇总行。在结果集内返回每个可能的组和子组组合的 GROUP BY 汇总行。GROUP BY 汇总行在结果中显示为 NULL,但可用来表示所有值。使用 GROUPING 函数确定结果集内的空值是否是 GROUP BY 汇总值。

结果集内的汇总行数取决于 GROUP BY 子句内包含的列数。GROUP BY 子句中的每个操作数(列)绑定在分组 NULL 下,并且分组适用于所有其它操作数(列)。由于 CUBE 返回每个可能的组和子组组合,因此不论指定分组列时所使用的是什么顺序,行数都相同。

ROLLUP

指定在结果集内不仅包含由 GROUP BY 提供的正常行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集内生成的行数。



重要 使用 CUBE 或 ROLLUP 时,不支持区分聚合,如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用这类聚合,SQL Server 将返回错误信息并取消查询。
QYworld 2002-03-31
  • 打赏
  • 举报
回复
sql语句里Group by怎么用,lostinet说的方法我不太明白?

我是来求和,所以改成count不行,而且是access数据库所以用neweb(永不言败)的方法也不行了

jinhaiou(辛)的方法也搞不懂:(

麻烦大家,还有什么办法,这个问题实在托很久了。。。。
tripofdream 2002-03-31
  • 打赏
  • 举报
回复
sql="select sum(file_weekview) AS total,class_id from file where class_id="&rs("class_id")&" Group By class_id"
就是按照class_id分组并求每组的file_weekview的总和.
select子句中的列(使用聚合函数的列除外,如上面的file_weekview列)必须是group by子句中有的列,如上面的class_id;如果这样
sql="select sum(file_weekview) AS total,class_id,class_name from file where class_id="&rs("class_id")&" Group By class_id"
就会出错,因为select子句中的class_name列在group by子句中没有出现


QYworld 2002-03-24
  • 打赏
  • 举报
回复
对不起,是我写错了
dim total_weekview_num
total_weekview_num=0
是应该在循环外的

我试了各位的方法,但total_weekview_num根本得不到值,就算是上面两句写在循环里,也不会输出0,这是为什么?
julyclyde 2002-03-24
  • 打赏
  • 举报
回复
把select里面的sum改成count就可以了
jinhaiou 2002-03-24
  • 打赏
  • 举报
回复
sum()在sql語句中不好用,我建議用:
while not rs.eof
total=total+rs("字段")
就不會錯了.很好用.
Lostinet 2002-03-24
  • 打赏
  • 举报
回复
sql1="select sum(file_weekview) AS total from file where class_id="&rs("class_id")&" Group By class_id"
neweb 2002-03-24
  • 打赏
  • 举报
回复
前面加一句试试

set total_num=server.createobject("adodb.recordset")

如果是 sql server, sql1 改为
"select isnull(sum(file_weekview),0) from file where class_id="&rs("class_id")
neweb 2002-03-18
  • 打赏
  • 举报
回复
是不是这两句应该放在循环的前面,不然还没输出就值 0 了

dim total_weekview_num
total_weekview_num=0
lovek666 2002-03-18
  • 打赏
  • 举报
回复
dim total_weekview_num
total_weekview_num=0
放在循环外试试
zzw922 2002-03-18
  • 打赏
  • 举报
回复
是,同意neweb(永不言败)
在循环中每次都重新把total_weekview_num置零
循环有问题
srnld 2002-03-17
  • 打赏
  • 举报
回复
改一下SQL语句
sql1="select sum(file_weekview) AS total from file where class_id="&rs("class_id")
set total_num=conn.execute(sql1)
weekview_num=total_num("total")

dim total_weekview_num
total_weekview_num=0
total_weekview_num=total_weekview_num+weekview_num

28,406

社区成员

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

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