zoukankan      html  css  js  c++  java
  • 结果集一组数据的第几条ROW_NUMBER基本用法

    因为项目中用到,今天来记录下 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'

    这样就可以办到了。

  • 相关阅读:
    js三种存储方式区别
    利用split方法计算字符串中出现字母最多的次数
    图片预加载的三个方法
    页面有大量图片,优化图片的加载方法
    USB通信协议——深入理解
    C/C++回调函数
    显卡工作原理
    include包含头文件的语句中,双引号和尖括号的区别是什么?
    华为2015校园招聘 上机试题
    位操作基础篇之位操作全面总结
  • 原文地址:https://www.cnblogs.com/sunxun/p/5694915.html
Copyright © 2011-2022 走看看