zoukankan      html  css  js  c++  java
  • 【ROW_NUMBER 函数(Transact-SQL)】

    【ROW_NUMBER 函数(Transact-SQL)】返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

    注释: ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) --(其中,COL1,COL2可以为多列)

    select xt.id,
           xt.item,
           xt.attribute1,
           xt.attribute2,
           ROW_NUMBER() OVER(PARTITION BY xt.id,xt.item order by xt.id,xt.item) test
      from xxuts_test xt

    表示根据COL1分组,在分组内部根据 COL2排序 而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)(示例C)

    示例:

    A.返回销售人员的行号 以下示例根据销售人员年初至今的销售额,计算 Adventure Works Cycles 中销售人员的行号。

    USE AdventureWorks2012; 
    GO
    SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS Row, 
        FirstName, LastName, ROUND(SalesYTD,2,1) AS "Sales YTD" 
    FROM Sales.vSalesPerson
    WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

    下面是结果集:

    B.返回行的子集 下面的示例按 OrderDate 的顺序计算 SalesOrderHeader 表中所有行的行号,并只返回行 50 到 60(含)。

    USE AdventureWorks2012;
    GO
    WITH OrderedOrders AS
    (
        SELECT SalesOrderID, OrderDate,
        ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
        FROM Sales.SalesOrderHeader 
    ) 
    SELECT SalesOrderID, OrderDate, RowNumber  
    FROM OrderedOrders 
    WHERE RowNumber BETWEEN 50 AND 60;

    C.将 ROW_NUMBER () 与 PARTITION 一起使用

    使用 PARTITION BY 参数按列 TerritoryName 对结果集进行分区。  

    在 OVER 子句中指定的 ORDER BY 子句按列 SalesYTD 对每个分区中的行进行排序。

    SELECT 语句中的 ORDER BY 按 TerritoryName 子句对整个查询结果集中进行排序。 

    USE AdventureWorks2012;
    GO
    SELECT FirstName, LastName, TerritoryName, ROUND(SalesYTD,2,1),
    ROW_NUMBER() OVER(PARTITION BY TerritoryName ORDER BY SalesYTD DESC) AS Row
    FROM Sales.vSalesPerson
    WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0
    ORDER BY TerritoryName;

    下面是结果集:

  • 相关阅读:
    【转】Python常见web系统返回码
    【转】暴力破解无线WiFi密码
    【转】Django继承AbstractUser新建User Model时出现auth.User.groups: (fields.E304)错误
    Python去除文件中的空格、Tab键和回车
    用filter求素数
    【转】Python读取PDF文档,输出内容
    【转】RPC简单介绍
    【转】Python3使用Django2.x的settings文件详解
    Python生成随机字符串
    Python之turtle画同心圆和棋盘
  • 原文地址:https://www.cnblogs.com/haozhenjie819/p/3417709.html
Copyright © 2011-2022 走看看