码迷,mamicode.com
首页 > 其他好文 > 详细

ROW_NUMBER基本用法

时间:2016-07-22 14:25:55      阅读:445      评论:0      收藏:0      [点我收藏+]

标签:

因为项目中用到,今天来记录下 ROW_NUMBER的用法。

说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

语法:ROW_NUMBER () OVER ([ <partition_by_clause>]<order_by_clause> ) 。
备注:ORDERBY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。

参数:<partition_by_clause> :将FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。
<order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。

返回类型:bigint 。

假如要得到一组数据,第一条,第二条,第三条,第四条,第五条 ,分别得每一条中的一个字段的值作为一个行转列的值。

原数据是:

学号        学期        语文    
id        xueqi        yuwen    
1001        1        90    
1001        2        60    
1001        3        70    
1001        4        80    

希望得到数据:

学号                语文1            语文2        语文3            语文4
1001                                                

这样,这里就可以派上用场了。


SELECT
        CASE WHEN ( ROW_NUMBER() OVER(PARTITION BY id ORDER BY xueqi ) = 1  ) THEN inner_cd END AS 语文1,
        CASE WHEN ( ROW_NUMBER() OVER(PARTITION BY id ORDER BY xueqi ) = 2  ) THEN inner_cd END AS 语文_2,
        CASE WHEN ( ROW_NUMBER() OVER(PARTITION BY id ORDER BY xueqi ) = 3  ) THEN inner_cd END AS 语文3,
        CASE WHEN ( ROW_NUMBER() OVER(PARTITION BY id ORDER BY xueqi ) = 4  ) THEN inner_cd END AS 语文_4,
        CASE WHEN ( ROW_NUMBER() OVER(PARTITION BY id ORDER BY xueqi ) = 5  ) THEN inner_cd END AS 语文_5
    FROM
        TEMP .xxx
    WHERE
        TEMP .xxx.id = 10001

这样就可以办到了。

ROW_NUMBER基本用法

标签:

原文地址:http://www.cnblogs.com/sunxun/p/5694915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!