次の方法で共有


ROW_NUMBER (Transact-SQL)

更新 : 2006 年 7 月 17 日

結果セットのパーティション内の行について、各パーティションの最初の行を 1 とした連続する数値を返します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • <partition_by_clause>
    FROM 句で生成された結果セットを、ROW_NUMBER 関数が適用されるパーティションに分割します。PARTITION BY の構文については、「OVER 句 (Transact-SQL)」を参照してください。
  • <order_by_clause>
    ROW_NUMBER 値がパーティション内の行に割り当てられる順序を決定します。詳細については、「ORDER BY 句 (Transact-SQL)」を参照してください。<order_by_clause> が順位付け関数で使用される場合、整数値で列を表すことはできません。

戻り値の型

bigint

解説

ORDER BY 句は、指定したパーティション内の行に一意の ROW_NUMBER を割り当てる順序を決定します。

ms186734.note(ja-jp,SQL.90).gifメモ :
OVER 句内で使用される ORDER BYROW_NUMBER の順序付けを行いますが、SELECT ステートメント内に、'Row Number' 以外の列によって順序付けを行う ORDER BY 句が追加された場合、結果セットは外側にある ORDER BY によって順序付けられます。

次の例では、AdventureWorks の販売員について、今年に入ってからの売り上げに基づく ROW_NUMBER を返します。

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0;

次の例では、OrderDate の順に、50 から 60 までの番号を持つ行を返します。

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;

次に、PARTITION BY 引数の使用例を示します。

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,ROW_NUMBER() OVER 
    (PARTITION BY PostalCode ORDER BY SalesYTD DESC) AS 'Row Number'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0;

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • PARTITION BY 引数の使用例を追加しました。

参照

関連項目

RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)
順位付け関数 (Transact-SQL)
関数 (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手