如何在Select语句中动态对行进行编号(T-SQL)
时 间:2004-11-11 00:00:00
作 者:Microsoft ID:61 城市:岳阳
摘 要:行编号或排序是一个典型的过程问题。 其解决方法一般是基于循环函数和临时表,即 SQL Server 循环函数和游标函数。 本文说明如何在执行 SELECT 语句时动态地对行排序。 这是一种很灵活的方法,也可能是唯一可能的解决方法。 它比过程解决方法要快一些。
正 文:
此技术基于“自动联接”(AUTO JOIN) 技术。 所选的关系一般为“大于”。 其目的是当集合与本身比较时,统计有多少次指定数据集合的每个元素实现“大于”关系。 以下示例均基于数据库 pubs。
示例 1
Set 1 是作者。
Set 2 是作者。
关系是“姓名大于”。
通过将“名 + 姓”与其它的“名 + 姓”进行比较,可以避免重复问题。
我们用 count(*) 统计关系实现的次数。
查询:
select rank=count(*), a1.au_lname, a1.au_fname from authors a1, authors a2 where a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname group by a1.au_lname, a1.au_fname order by 1 |
结果:
Rank Au_Lname Au_Fname ---- -------------- ----------- 1 Bennet Abraham 2 Blotchet-Halls Reginald 3 Carson Cheryl 4 DeFrance Michel 5 del Castillo Innes 6 Dull Ann 7 Greene Morningstar 8 Green Marjorie 9 Gringlesby Burt 10 Hunter Sheryl 11 Karsen Livia 12 Locksley & Access软件网官方交流QQ群 (群号:54525238) Access源码网店 常见问答:技术分类:相关资源:源码示例
![]() 学习心得最新文章
|