LEAD
說明
LEAD
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並傳回群組中目前列之後 (下方) 指定偏移處該列中某個欄位的值。該
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。該 ORDER BY
子句決定如何排序分區中的列。Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的潛在客戶)。
語法
LEAD(input_field,offset,default_value)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
傳回值
每列傳回一個與
input_field
類型相同的值。輸入參數
- input_field
- 必填。要執行匯總函數的欄位。您可以指定任何欄位類型。
- offset
- 選用。要傳回其值的目前列之後的列數。必須是大於或等於零 (0) 且小於或等於 100 的常值數字。若未指定偏移,Workday 會使用值 1。
- default_value
- 選用。當偏移列位於目前定義的視窗之外,或偏移列中的值為 NULL 時,此函數會傳回的值。default_value必須與input_field的類型相同。若未指定預設值,Workday 會使用 NULL。
- OVER()
- 必填。OVER必須在以下範圍內使用LEAD運算式。
- PARTITIONBYpartitioning_field
- 必填。使用PARTITION BY子句,指定一或多個欄位,用於對一組輸入列進行分區。您可以指定「貨幣」以外的任何欄位類型。例如,如果您將「月份」欄位指定為分區欄位,Workday 會將月份值相同的所有記錄分組歸入單一分區。
- ORDER BYordering_field
- 必填。使用ORDER BY子句,使用每個分區內的指定欄位值,指定如何排序分區中的輸入列。您可以指定「貨幣」以外的任何欄位類型。您可以使用DESC或ASC關鍵字︰依每個排序欄位的遞減順序 (高到低,NULL 在最後) 或遞增順序 (低到高,NULL 在前) 進行排序。如果您未為排序欄位指定排序順序,Workday 會自動按遞增順序對列進行排序。
範例
範例︰您有一個包含以下列和欄位的資料集。
row_ID | Employee_Name | Eff_Date | 薪資 |
|---|---|---|---|
1 | Goh | 1/1/18 | 49000 |
2 | Goh | 1/1/19 | 56000 |
3 | Goh | 1/1/17 | 44000 |
4 | 弗里曼 | 1/1/18 | 65000 |
5 | 弗里曼 | 1/1/17 | 57000 |
6 | 弗里曼 | 1/1/19 | 69000 |
7 | 斯密 | 1/1/18 | 51000 |
8 | 斯密 | 1/1/19 | 56000 |
9 | 斯密 | 1/1/16 | 44000 |
您可以在生效日期 (
Eff_Date
) 欄位中,依遞減順序 (DESC
) 對每個正職員工的列進行排序,因此最近的薪資在每個分區中排在最前面。請在
Salary_Increase
欄位中使用此運算式,計算每次變更生效日期之間的薪資變化︰[Salary] - (LEAD([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] DESC) )
您會得到以下結果︰
row_ID | Employee_Name | Eff_Date | 薪資 | Salary_Increase |
|---|---|---|---|---|
2 | Goh | 1/1/19 | 56000 | 7000 |
1 | Goh | 1/1/18 | 49000 | 5000 |
3 | Goh | 1/1/17 | 44000 | 0 |
6 | 弗里曼 | 1/1/19 | 69000 | 4000 |
4 | 弗里曼 | 1/1/18 | 65000 | 8000 |
5 | 弗里曼 | 1/1/17 | 57000 | 0 |
8 | 斯密 | 1/1/19 | 56000 | 5000 |
7 | 斯密 | 1/1/18 | 51000 | 7000 |
9 | 斯密 | 1/1/16 | 44000 | 0 |