作者:绿色风
分类:
时间:2022-08-17
浏览:203
楼主 wise |
最近在某SQL大师的空间看到这样一篇文章,但是关于SQL Server 2000的,本人把这篇东西收藏下来,不敢独享,根据Excel里面的SQL语法进行改编调试,发上来给大家分享。 以下SQL语句均经过本人调试。
很多朋友都碰到这个问题,如果在查询中生成一个行号。比如有如下表 [Sheet1$]
想按分数来得到名次,如何实现? Excel 的SQL语句中没有rownum之类的伪列函数。 不过除了采用程序来实现外,你还可以通过下面SQL查询语句来实现 一、按成绩排序,并列者向下顺延(如下没有第三名,并列两个第四)。
- select a.ID, a.CNAME, a.SCORE,count(*) as SNO from
- [Sheet1$] a inner join [Sheet1$] b on a.SCORE<=b.SCORE
- group by a.ID, a.CNAME, a.SCORE order by a.SCORE desc
二、按成绩排序,并列者向上顺延(如下没有第四名,并列两个第三)。
- select a.ID, a.CNAME, a.SCORE,count(b.ID)+1 as SNO
- from [Sheet1$] a left join [Sheet1$] b on a.SCORE<b.SCORE
- group by a.ID, a.CNAME, a.SCORE
- order by a.SCORE desc
三、按成绩排序,并列者以学号大者在先。
- select a.ID, a.CNAME, a.SCORE,count(*) as SNO
- from [Sheet1$] a inner join [Sheet1$] b on (a.SCORE<b.SCORE or (a.SCORE=b.SCORE and a.ID<=b.ID))
- group by a.ID, a.CNAME, a.SCORE
- 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总版主之一