您的位置:首页 > 数据库

SQL实例进阶-学习sql server2005 step by step(八)

2010-02-23 12:35 696 查看
1.SQL2005中row_number( )、rank( )、dense_rank( )、ntile( )函数的用法

(1).row_number( )

先来点数据,先建个表

代码

WITH DirectReports(groupid, member, EmployeeLevel,type) AS

(

SELECT groupid, member, 0,type AS EmployeeLevel

FROM groupinfo

WHERE groupid = 'finance_company'

UNION ALL

SELECT e.groupid, e.member, EmployeeLevel + 1,e.type

FROM groupinfo e

INNER JOIN DirectReports d

ON e.groupid = d.member

)

SELECT b.nickname,groupid, member, EmployeeLevel,type

FROM DirectReports,userbasicinfo b

where DirectReports.member=b.id

and type = 1


最后顺带一个小提示:(很多人开始用的时候比较迷糊)

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

select n1,n2,n3,n4,max(n4) from table group by n1,n2,n3.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: