zoukankan      html  css  js  c++  java
  • SQL 2005 中 ROW_NUMBER 用法

    原文地址: http://msdn.microsoft.com/en-us/library/ms186734.aspx
     
    ROW_NUMBER (Transact-SQL)

    Returns the sequential number of a row within a partition of a result set, starting at 1 for the first row in each partition.

    Topic link icon Transact-SQL Syntax Conventions

    ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )
    <partition_by_clause>

    Divides the result set produced by the FROM clause into partitions to which the ROW_NUMBER function is applied. For the PARTITION BY syntax, see OVER Clause (Transact-SQL).

    <order_by_clause>

    Determines the order in which the ROW_NUMBER value is assigned to the rows in a partition. For more information, see ORDER BY Clause (Transact-SQL). An integer cannot represent a column when the <order_by_clause> is used in a ranking function.

    bigint

    The ORDER BY clause determines the sequence in which the rows are assigned their unique ROW_NUMBER within a specified partition.

    A. Returning the row number for salespeople

    The following example returns the ROW_NUMBER for the salespeople in AdventureWorks based on the year-to-date sales.

    SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode
    FROM Sales.vSalesPerson
    WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

    B. Returning a subset of rows

    The following example returns rows with numbers 50 to 60 inclusive in the order of the OrderDate.

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

    C. Using ROW_NUMBER() with PARTITION

    The following example shows using the ROW_NUMBER function with the PARTITION BY argument.

    SELECT FirstName, LastName, ROW_NUMBER() OVER(PARTITION BY PostalCode ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode
    FROM Sales.vSalesPerson
    WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
  • 相关阅读:
    164-268. 丢失的数字
    163-20. 有效的括号
    Sword 30
    Sword 29
    Sword 27
    Sword 25
    Sword 24
    Sword 22
    Sword 21
    Sword 18
  • 原文地址:https://www.cnblogs.com/friendwang1001/p/1353621.html
Copyright © 2011-2022 走看看