ROW_NUMBER
Beschreibung
ROW_NUMBER
ist eine Fensteraggregatfunktion, die Zeilen in Gruppen unterteilt, Zeilen nach einem Feld ordnet und jeder Zeile in einer Gruppe eine eindeutige fortlaufende Nummer zuweist, beginnend mit 1 für die erste Zeile in jeder Gruppe. ROW_NUMBER
weist jeder Zeile in einer Gruppe immer einen eindeutigen Wert zu. Das möchten Sie bestimmt verwenden ROW_NUMBER
, um eine eindeutige ID für jede Zeile in Ihrem Dataset zu erstellen.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 angeordnet werden, bevor ihnen eine fortlaufende Nummer zugewiesen wird. Workday teilt die Eingabezeilen entsprechend den Partitionierungsfeldern in Gruppen auf, ordnet die Zeilen entsprechend den Sortierfeldern an und berechnet dann den Aggregatausdruck (Zeilennummerierung für diese Funktion) in jeder Gruppe. Die nummerierten Zeilen in jeder Gruppe beginnen bei 1.
Syntax
ROW_NUMBER()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Rückgabewert
Gibt einen Wert des Typs "" zurück
INTEGER
.Eingabeparameter
- OVER()
- Erforderlich.OVERmuss innerhalb einer verwendet werdenROW_NUMBERAusdruck.
- 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. Workday gruppiert dann alle Datensätze, die denselben Wert für „Monat“ haben, in einer einzigen 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.
Mitarbeiter | Verkaufsdatum | Sales |
|---|---|---|
Goh | 12/31/2018 | 140 |
Goh | 11/30/2018 | 60 |
Goh | 10/31/2018 | 140 |
Freiman | 12/31/2018 | 160 |
Freiman | 11/30/2018 | 60 |
Freiman | 10/31/2018 | 110 |
Smith | 12/31/2018 | 140 |
Smith | 11/30/2018 | 60 |
Smith | 10/31/2018 | 120 |
Sie können den Verkäufen jedes Mitarbeiters in absteigender Reihenfolge eine eindeutige ID zuweisen, sodass die höchsten Verkäufe die Rangfolge 1 erhalten. Verwenden Sie folgenden Ausdruck im Feld
Sales Numerisch nach Mitarbeiter
:ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Sie erhalten folgende Ergebnisse:
Mitarbeiter | Verkaufsdatum | Sales | Anzahl Verkäufe nach Mitarbeiter |
|---|---|---|---|
Goh | 12/31/2018 | 140 | 1 |
Goh | 10/31/2018 | 140 | 2 |
Goh | 11/30/2018 | 60 | 3 |
Freiman | 12/31/2018 | 160 | 1 |
Freiman | 10/31/2018 | 110 | 2 |
Freiman | 11/30/2018 | 60 | 3 |
Smith | 12/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Smith | 11/30/2018 | 60 | 3 |
Sie können den Verkäufen auch für jedes Datum in absteigender Reihenfolge eine eindeutige ID zuweisen, sodass die höchsten Verkäufe die Rangfolge 1 erhalten. Verwenden Sie folgenden Ausdruck im Feld
"Verkaufszahlen nach Datum"
:ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Sie erhalten folgende Ergebnisse:
Mitarbeiter | Verkaufsdatum | Sales | Anzahl Verkäufe nach Datum |
|---|---|---|---|
Freiman | 12/31/2018 | 160 | 1 |
Goh | 12/31/2018 | 140 | 2 |
Smith | 12/31/2018 | 140 | 3 |
Goh | 11/30/2018 | 60 | 1 |
Freiman | 11/30/2018 | 60 | 2 |
Smith | 11/30/2018 | 60 | 3 |
Goh | 10/31/2018 | 140 | 1 |
Smith | 10/31/2018 | 120 | 2 |
Freiman | 10/31/2018 | 110 | 3 |
Sie können auch verwenden
ROW_NUMBER
, um die neueste Version jeder Zeile in einem Dataset zu bestimmen, das mehrere Zeilen pro ID enthält. In diesem Szenario erfordert das Dataset ein Datumsfeld, das angibt, wann die Informationen in dieser Zeile aktuell wurden. Wenn Sie mit Data Warehaltung-Konzepten vertraut sind, handelt es sich um eine Dimensionstabelle des Typs 2, die sich langsam ändert. Sie haben ein Dataset mit diesen Zeilen und Feldern.ID | Name | Region | Gültigkeitsdatum |
|---|---|---|---|
G1 | Gorman | Westen | 01/01/2015 |
H1 | Harris | Westen | 01/01/2015 |
G1 | Gorman | Osten | 09/01/2016 |
H1 | Harris | Osten | 01/03/2017 |
H1 | Harris | Inland | 01/20/2021 |
Um der neuesten Version jeder ID den Wert 1 zuzuweisen, verwenden Sie diesen Ausdruck im Feld
Neueste Version
:ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
Sie erhalten folgende Ergebnisse:
ID | Name | Region | Gültigkeitsdatum | Neueste Version |
|---|---|---|---|---|
G1 | Gorman | Westen | 01/01/2015 | 2 |
H1 | Harris | Westen | 01/01/2015 | 3 |
G1 | Gorman | Osten | 09/01/2016 | 1 |
H1 | Harris | Osten | 01/03/2017 | 2 |
H1 | Harris | Inland | 01/20/2021 | 1 |
Sie können mithilfe einer Filterphase nach
"Neueste Version"
filtern, um für jede ID nur die neueste Zeile zurückzugeben.