Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

如何在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群 (群号:483923997)       Access源码网店

专栏作家