SQL Server 2005学习总结:排名函数(三)

日期: 2008-08-19 作者:aierong 来源:TechTarget中国 英文

  SQL 2005实现排名非常方便,但是用SQL 2000实现排名就比较麻烦,下面是SQL 2000的实现代码:


  –RANK在sql 2000中的实现






select orderid,qty, 
  (select count(1)+1 from rankorder where qty  
  from rankorder r 
  ORDER BY qty 
  go 

  –ROW_NUMBER在sql 2000中的实现


  –利用临时表和IDENTITY(函数)







  select identity(int,1,1) as [ROW_NUMBER],orderid,qty 
  into #tem 
  from rankorder 
  select orderid,qty,[ROW_NUMBER] 
  from #tem 
  drop table #tem 
  go 
  –DENSE_RANK在sql 2000中的实现 
  select identity(int,1,1) as ids, qty 
  into #t 
  from rankorder 
  group by qty 
  order by qty 
  select r.orderid,r.qty,t.ids as [DENSE_RANK] 
  from rankorder r join #t t 
  on r.qty=t.qty 
  drop table #t 
  go 


  排名函数是与窗口函数OVER()配合一起使用的。


  如果借助OVER子句的参数PARTITION BY,就可以将结果集分为多个分区。排名函数将在每个分区内进行排名.


  –例题







  select orderid,qty, 
  DENSE_RANK() OVER(ORDER BY qty) AS a , 
  DENSE_RANK() OVER(PARTITION BY orderid ORDER BY qty) AS b 
  FROM rankorder 
  ORDER BY qty 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

aierong
aierong

相关推荐