

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# ROW\$1NUMBER 範圍函數
<a name="WF_ROW_NUMBER"></a>

根據 OVER 子句中的 ORDER BY 表達式，決定一組列之內目前列的序數 (從 1 起算)。如果有選用的 PARTITION BY 子句，則會重設每一組列的序數。對於 ORDER BY 表達式，具有相等值的列會獲得非決定性的不同列號。

## 語法
<a name="WF_ROW_NUMBER-synopsis"></a>

```
ROW_NUMBER () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## 引數
<a name="WF_ROW_NUMBER-arguments"></a>

( )   
此函數不接受引數，但需要空括號。

OVER   
ROW\$1NUMBER 函數的視窗子句。

PARTITION BY *expr\$1list*   
選用。一或多個用於定義 ROW\$1NUMBER 函數的表達式。

ORDER BY *order\$1list*   
選用。此表達式定義列號所根據的欄。如果未指定 PARTITION BY，ORDER BY 會使用整個資料表。  
如果 ORDER BY 未產生唯一排序或被省略，則列的順序不確定。如需詳細資訊，請參閱[範圍函數的資料唯一排序](Window_functions.md#Examples_order_by_WF)。

## 傳回類型
<a name="Supported_data_types_WF_ROW_NUMBER"></a>

BIGINT

## 範例
<a name="WF_ROW_NUMBER-examples"></a>

下列範例依 SELLERID 分割資料表，並依 QTY 排序每一個分割區 (以遞增順序)，然後將列號指派給每一列。套用範圍函數結果之後排序結果。

```
select salesid, sellerid, qty, 
row_number() over 
(partition by sellerid
 order by qty asc) as row
from winsales
order by 2,4;

 salesid | sellerid | qty | row
---------+----------+-----+-----
   10006 |        1 |  10 |   1
   10001 |        1 |  10 |   2
   10005 |        1 |  30 |   3
   20001 |        2 |  20 |   1
   20002 |        2 |  20 |   2
   30001 |        3 |  10 |   1
   30003 |        3 |  15 |   2
   30004 |        3 |  20 |   3
   30007 |        3 |  30 |   4
   40005 |        4 |  10 |   1
   40001 |        4 |  40 |   2
(11 rows)
```

 如需 WINSALES 資料表的描述，請參閱[範圍函數範例的範例資料表](Window_functions.md#Window_function_example)。