跳至主要內容
Workday User Guide
上次更新時間 :2023-06-23
ROW_NUMBER

ROW_NUMBER

說明

ROW_NUMBER
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並為群組中的每一列指派唯一的連續編號,每個群組中的第一列從 1 開始。
ROW_NUMBER
一律為群組中的每一列指派唯一的值。您可能想要使用
ROW_NUMBER
,為資料集中的每一列建立唯一的 ID。
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。
ORDER BY
子句會決定在為分區中的列指派序號之前,如何排序這些列。
Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的列編號)。每個群組中的編號列從 1 開始。

語法

ROW_NUMBER
()
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]] )

傳回值

傳回值類型
INTEGER

輸入參數

OVER()
必填。
OVER
必須在以下範圍內使用
ROW_NUMBER
運算式。
PARTITION
BYpartitioning_field
必填。使用
PARTITION BY
子句,指定一或多個欄位,用於對一組輸入列進行分區。您可以指定「貨幣」以外的任何欄位類型。例如,如果您將「月份」欄位指定為分區欄位,Workday 會將「月份」值相同的所有記錄分組歸為單一分區。
ORDER BY
ordering_field
必填。使用
ORDER BY
子句,使用每個分區內的指定欄位值,指定如何排序分區中的輸入列。您可以指定「貨幣」以外的任何欄位類型。
您可以使用
DESC
ASC
關鍵字︰依每個排序欄位的遞減順序 (高到低,NULL 在最後) 或遞增順序 (低到高,NULL 在前) 進行排序。如果您未為排序欄位指定排序順序,Workday 會自動按遞增順序對列進行排序。

範例

範例︰您有一個包含以下列和欄位的資料集。
正職員工
銷售日期
銷售
Goh
12/31/2018
140
Goh
11/30/2018
60
Goh
10/31/2018
140
弗里曼
12/31/2018
160
弗里曼
11/30/2018
60
弗里曼
10/31/2018
110
斯密
12/31/2018
140
斯密
11/30/2018
60
斯密
10/31/2018
120
您可以按遞減順序為每個正職員工的銷售額指派唯一 ID,因此最高銷售額的排名為 1。請在
銷售額 (依正職員工)
欄位中使用以下運算式︰
ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
您會得到以下結果︰
正職員工
銷售日期
銷售
銷售人數 - 依正職員工
Goh
12/31/2018
140
1
Goh
10/31/2018
140
2
Goh
11/30/2018
60
3
弗里曼
12/31/2018
160
1
弗里曼
10/31/2018
110
2
弗里曼
11/30/2018
60
3
斯密
12/31/2018
140
1
斯密
10/31/2018
120
2
斯密
11/30/2018
60
3
您也可以按遞減順序為每個日期的銷售額指派唯一 ID,因此最高銷售額將獲得排名 1。請在
銷售數字 (依日期)
欄位中使用此運算式︰
ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
您會得到以下結果︰
正職員工
銷售日期
銷售
銷售額 - 依日期
弗里曼
12/31/2018
160
1
Goh
12/31/2018
140
2
斯密
12/31/2018
140
3
Goh
11/30/2018
60
1
弗里曼
11/30/2018
60
2
斯密
11/30/2018
60
3
Goh
10/31/2018
140
1
斯密
10/31/2018
120
2
弗里曼
10/31/2018
110
3
您也可以使用
ROW_NUMBER
,確定每個 ID 包含多列的資料集中每一列的最新版本。在這種情況下,資料集需要一個日期欄位,以表示該列中的資訊成為最新資訊的時間。如果您熟悉資料倉儲概念,這就是類型 2 漸變維度表。您有一個包含這些列和欄位的資料集。
ID
名稱
區域
生效日期
G1
高曼
West
01/01/2015
H1
哈瑞斯
West
01/01/2015
G1
高曼
09/01/2016
H1
哈瑞斯
01/03/2017
H1
哈瑞斯
全國
01/20/2021
若要將值 1 指派給每個 ID 的最新版本,請在
「最新版本」
欄位中使用以下運算式︰
ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
您會得到以下結果︰
ID
名稱
區域
生效日期
最新版本
G1
高曼
West
01/01/2015
2
H1
哈瑞斯
West
01/01/2015
3
G1
高曼
09/01/2016
1
H1
哈瑞斯
01/03/2017
2
H1
哈瑞斯
全國
01/20/2021
1
您可以使用篩選階段根據
最新版本
進行篩選,以便僅傳回每個 ID 的最新列。