LEAD
Beschreibung
LEAD
ist eine Fensteraggregatfunktion, die Zeilen in Gruppen unterteilt, Zeilen nach einem Feld ordnet und den Wert eines Felds in der Zeile mit dem angegebenen Offset nach (unter) der aktuellen Zeile in der Gruppe zurückgibt.Die
PARTITION BY
Die -Klausel bestimmt, welche Felder verwendet werden sollen, um einen Satz von Eingabezeilen in Gruppen zu unterteilen. Die ORDER BY
Die -Klausel bestimmt, wie die Zeilen in der Partition sortiert werden.Workday teilt die Eingabezeilen entsprechend den Partitionierungsfeldern in Gruppen auf, ordnet die Zeilen entsprechend den Sortierfeldern an und berechnet dann den Aggregatausdruck (Lead für diese Funktion) in jeder Gruppe.
Syntax
LEAD(input_field,offset,default_value)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Rückgabewert
Gibt pro Zeile einen Wert zurück, der denselben Typ wie das
Feld "eingabe_feld"
hat.Eingabeparameter
- input_field
- Erforderliche Inhalte. Das Feld, für das die Aggregatfunktion ausgeführt werden soll. Sie können eine beliebige Feldart angeben.
- offset
- Optional. Die Anzahl der Zeilen nach der aktuellen Zeile, deren Wert zurückgegeben werden soll. Sie muss eine Literalzahl größer oder gleich 0 (0) und kleiner oder gleich 100 sein. Wenn Sie keinen Zeitversatz angeben, verwendet Workday den Wert 1.
- default_value
- Optional. Der Wert, den diese Funktion zurückgibt, wenn sich die Versatzzeile außerhalb des aktuell definierten Fensters befindet oder wenn der Wert in der Versatzzeile NULL ist.Standardwertmuss die gleiche Art wieInput_Fieldhaben. Wenn Sie keinen Standardwert angeben, verwendet Workday den Wert NULL.
- OVER()
- Erforderlich.OVERmuss innerhalb einer verwendet werdenLEADAusdruck.
- PARTITION BYpartitioning_field
- Erforderliche Inhalte. Verwenden Sie diePARTITION BY-Klausel, um ein oder mehrere Felder anzugeben, die zur Partitionierung einer Gruppe von Eingabezeilen verwendet werden sollen. Sie können eine beliebige Feldart außer Währung angeben. Beispiel: Sie geben das Feld „Monat“ als Partitionsfeld an. Daher gruppiert Workday alle Datensätze, die denselben Wert für „Monat“ haben, in einer einzelnen Partition.
- ORDER BYordering_field
- Erforderliche Inhalte. Verwenden Sie dieORDER BY-Klausel, um anzugeben, wie die Eingabezeilen in der Partition sortiert werden sollen, indem die Werte im angegebenen Feld in jeder Partition verwendet werden. Sie können eine beliebige Feldart außer Währung angeben.Sie können die verwendenDESCoderASCSchlüsselwörter, die in absteigender Reihenfolge (Werte hoch nach unten, NULL-Werte kommen zuletzt) oder aufsteigend (von niedrigem bis hohem Wert, NULL-Werte zuerst) für jedes Reihenfolgefeld sortiert werden sollen. Wenn Sie keine Sortierreihenfolge für ein Reihenfolgefeld angeben, sortiert Workday die Zeilen automatisch in aufsteigender Reihenfolge.
Beispiele
Beispiel: Sie haben ein Dataset mit diesen Zeilen und Feldern.
row_ID | Employee_Name | Eff_Date | Gehaltsplan |
|---|---|---|---|
1 | Goh | 1/1/18 | 49000 |
2 | Goh | 1/1/19 | 56000 |
3 | Goh | 01.01.2017 | 44000 |
4 | Freiman | 1/1/18 | 65000 |
5 | Freiman | 01.01.2017 | 57000 |
6 | Freiman | 1/1/19 | 69000 |
7 | Smith | 1/1/18 | 51000 |
8 | Smith | 1/1/19 | 56000 |
9 | Smith | 1/1/16 | 44000 |
Sie können die Zeilen für jeden Mitarbeiter in absteigender Reihenfolge (
DESC
) nach dem Feld „Gültigkeitsdatum (Eff_Date
)“ sortieren, sodass das letzte Gehalt in jeder Partition an erster Stelle kommt.Verwenden Sie folgenden Ausdruck im Feld
Salary_Increase
, um die Gehaltsänderung zwischen jeder Änderung des Gültigkeitsdatums zu berechnen:[Salary] - (LEAD([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] DESC) )
Sie erhalten folgende Ergebnisse:
row_ID | Employee_Name | Eff_Date | Gehaltsplan | Salary_Increase |
|---|---|---|---|---|
2 | Goh | 1/1/19 | 56000 | 7000 |
1 | Goh | 1/1/18 | 49000 | 5000 |
3 | Goh | 01.01.2017 | 44000 | 0 |
6 | Freiman | 1/1/19 | 69000 | 4000 |
4 | Freiman | 1/1/18 | 65000 | 8000 |
5 | Freiman | 01.01.2017 | 57000 | 0 |
8 | Smith | 1/1/19 | 56000 | 5000 |
7 | Smith | 1/1/18 | 51000 | 7000 |
9 | Smith | 1/1/16 | 44000 | 0 |