| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3953 人关注过本帖
标题:用rank()学生成绩排名出错!
只看楼主 加入收藏
bxq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-6-14
收藏
 问题点数:0 回复次数:4 
用rank()学生成绩排名出错!

请教高手,用下面的这个语句对学生成绩进行排名时会出错!操作符丢失
sql = "select rank() over(order by zongfen) tt,*  from tj_j1"
rs.Open sql, cn, adOpenDynamic, adLockOptimistic

搜索更多相关主题的帖子: rank 学生 成绩 排名 出错 
2018-06-14 16:46
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 

排名函数是SQL SERVER2005新增的函数。排名函数总共有四种,分别是:row_number、rank、 dense_rank 、ntile。
row_number:顺序生成序号。
rank:相同的序值序号相同,但序号会跳号。
dense_rank :相同的序值序号相同,序号顺序递增。
ntile:装桶,把记录分成指的桶数,编序号。

RANK
  rank函数用于返回结果集的分区内每行的排名, 行的排名是相关行之前的排名数加一。简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,可以理解为根据当前的记录数生成序号,后面的记录依此类推。可能我描述的比较苍白,理解起来也比较吃力,我们直接上代码,rank函数的使用方法与row_number函数完全相同。

select RANK() OVER(order by [UserId]) as rank,* from [Order]

----------------------
还没用过 SQL2005 来,没接触过这个函数。
你对照这个说明,去检查:
1、你的SQL版本是多少,能不能支持这个函数。
2、把SQL命令拆分为最简单的,然后一步一步的添加条件,看看到哪一步出现错误。针对错误再进行分析处理。

--------------------
对照示例
select rank() over(order by zongfen) tt,*  from tj_j1
这个 tt  是你用来显示的列名吗?如果是,那就是少了 as
如果不是,那就是一个字段名,那就是少了 逗号。


授人于鱼,不如授人于渔
早已停用QQ了
2018-06-14 17:22
bxq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-6-14
收藏
得分:0 
回复 2楼 风吹过b
谢谢,这个语句我在SQL2008里查询正常,可是到VB连接ACCESS数据库就会出现这个问题!
2018-06-15 21:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
排名函数是SQL SERVER2005新增的函数

所以,这个函数适用于 SQL SERVER2005 及以后的版本,但不适用 ACCESS ,所以报错。
这种情况下,你需要使用 二次查询生成排名。
你百度一下,有这样的SQL命令例子。

找到一个博客文章,自己修改。
两条关于生成排名的SQL语句:
select name,score,(select count(*) from t where score>a.score)+1
from t a
order by score
上面是:1,2,3,3,3,6,7...
下面是:1,2,3,3,3,4,5
select name,score,(select count(distinct score) from t where score>a.score)+1
from t a
order by score


授人于鱼,不如授人于渔
早已停用QQ了
2018-06-16 21:12
bxq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-6-14
收藏
得分:0 
回复 4楼 风吹过b
谢谢版主,在你指导下问题已解决!
2018-06-18 18:08
快速回复:用rank()学生成绩排名出错!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017301 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved