如何在Select语句中动态对行进行编号(T-SQL) -朱亦文
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


如何在Select语句中动态对行进行编号(T-SQL)

发表时间:2004/11/11 评论(2) 浏览(10231)  评论 | 加入收藏 | 复制
   
摘 要:行编号或排序是一个典型的过程问题。 其解决方法一般是基于循环函数和临时表,即 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群(群号:198465573)
 
 相关文章
Transact-SQL语句进行导入导出操作  【金宇整理  2008/4/18】
Transact-SQL 语法约定  【UMVSoft整理  2008/5/19】
Transact-SQL 参考   【  2008/8/1】
VBA与T-SQL之间的函数比较  【UMVSoft整理  2009/5/5】
[access查询]对竹笛先生的[示例]查询中自动编号的修改   【wqm099  2010/9/1】
【Access源码】分组自动编号\筛选数据后自动分组编号的示例\分...  【麥田  2011/7/26】
常见问答
技术分类
相关资源
文章搜索
关于作者

朱亦文

文章分类

文章存档

友情链接