SQLServer巧妙地运用row_number和分包接上数据

SQLServer巧妙地运用row_number和分包接上数据
分组取前数据在T-SQL常用的查询,如取出前3的学生在各学科的学生信息管理系统,在SQL Server 2005这个查询是非常繁琐的,并且需要使用临时表的关联查询得到。SQL Server 2005后,row_number(是的)介绍功能,对row_number分组排序功能()函数使得这个操作非常简单,下面是一个简单的例子:
复制代码代码如下所示:
- 1。创建测试表
创建表#评分

名称varchar(20),
主体varchar(20),
评分int

- 2。插入测试数据
插入#评分(名称、主题、评分)值('zhang三','语言',98)
插入#评分(名称、主题、评分)值('zhang三、数学,80)
插入#评分(名称、主题、评分)值('zhang三,英语,90)
插入#评分(名称、主题、评分)值(李四','语言',88)
插入#评分(名称、主题、评分)值(李四、数学,86)
插入#评分(名称、主题、评分)值(李四','英语',88)
插入#评分(名称、主题、评分)值(李明','语言',60)
插入#评分(名称、主题、评分)值(李明、数学,86)
插入#评分(名称、主题、评分)值(李明','英语',88)
插入#评分(名称、主题、评分)值('lin丰','语言',74)
插入#评分(名称、主题、评分)值('lin丰','数学',99)
插入#评分(名称、主题、评分)值('lin丰','英语',59)
插入#评分(名称、主题、评分)值('yan明','英语',96)
- 3。获取每个主题的前3个数据。
SELECT * FROM

选择主题,姓名,成绩,row_number()在(受按分数划分)
T),按学科t.num 3
- 4。删除临时表
TRUNCATETABLE #评分
#评分表

语法形式:row_number()在(由COL2 col1顺序划分)
解读:根据COL1分组,组内的COL2排序,和计算出的值,这个函数表示顺序号每一组排序后。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部