ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > SQL in Excel > ROWNUM(伪行号)如何在Excel的SQL查询中实现

ROWNUM(伪行号)如何在Excel的SQL查询中实现

作者:绿色风 分类: 时间:2022-08-17 浏览:135
楼主
wise
最近在某SQL大师的空间看到这样一篇文章,但是关于SQL Server 2000的,本人把这篇东西收藏下来,不敢独享,根据Excel里面的SQL语法进行改编调试,发上来给大家分享。
以下SQL语句均经过本人调试。

很多朋友都碰到这个问题,如果在查询中生成一个行号。比如有如下表
[Sheet1$]

 
想按分数来得到名次,如何实现? Excel 的SQL语句中没有rownum之类的伪列函数。 不过除了采用程序来实现外,你还可以通过下面SQL查询语句来实现
一、按成绩排序,并列者向下顺延(如下没有第三名,并列两个第四)。

 
  1. select a.ID, a.CNAME, a.SCORE,count(*) as SNO from
  2. [Sheet1$] a inner join [Sheet1$] b on a.SCORE<=b.SCORE
  3. group by a.ID, a.CNAME, a.SCORE order by a.SCORE desc
二、按成绩排序,并列者向上顺延(如下没有第四名,并列两个第三)。

 
  1. select a.ID, a.CNAME, a.SCORE,count(b.ID)+1 as SNO
  2. from [Sheet1$] a left join [Sheet1$] b on a.SCORE<b.SCORE
  3. group by a.ID, a.CNAME, a.SCORE
  4. order by a.SCORE desc
三、按成绩排序,并列者以学号大者在先。

 
  1. select a.ID, a.CNAME, a.SCORE,count(*) as SNO
  2. from [Sheet1$] a inner join [Sheet1$] b on (a.SCORE<b.SCORE or (a.SCORE=b.SCORE and a.ID<=b.ID))
  3. group by a.ID, a.CNAME, a.SCORE
  4. order by 4
以上为标准SQL查询语句。
2楼
mn860429
学习了,很不错
3楼
yfan17
小7的SQL水平已经达到一个高度,仰望中。
4楼
xinger7
请教a.列名中,a代表什么?
5楼
bluexuemei
你这个是排序吧,不是生成行号!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap