Passer au contenu principal
Workday User Guide
Dernière mise à jour : 2023-06-23
ROW_NUMBER

ROW_NUMBER

Description

ROW_NUMBER
est une fonction d'agrégation de fenêtre qui répartit les lignes en groupes, trie les lignes en fonction d'un champ et attribue un numéro séquentiel unique à chaque ligne d'un groupe, en commençant par 1 pour la première ligne de chaque groupe.
ROW_NUMBER
affecte toujours une valeur unique à chaque ligne d'un groupe. Vous pouvez utiliser
ROW_NUMBER
afin de créer un identifiant unique pour chaque ligne de votre jeu de données.
Le
PARTITION BY
La clause d'entrée détermine les champs à utiliser pour répartir un ensemble de lignes d'entrée en groupes.
Le
ORDER BY
La clause .
Workday sépare les lignes d'entrée en groupes en fonction des champs de partition, trie les lignes en fonction des champs de tri, puis calcule l'expression d'agrégation (numéro de ligne pour cette fonction) dans chaque groupe. Les lignes numérotées de chaque groupe commencent à 1.

Syntaxe

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

Valeur de renvoi

Renvoie une valeur de type
INTEGER
.

Paramètres d'entrée

OVER()
Obligatoire.
OVER
doit être utilisé dans un calendrier
ROW_NUMBER
expression.
PARTITION BY
partitioning_field
Est obligatoire. Utilisez l'option
PARTITION BY
clause pour spécifier un ou plusieurs champs à utiliser pour partitionner un groupe de lignes d'entrée. Vous pouvez indiquer n'importe quel type de champ sauf Devise. Exemple : si vous spécifiez le champ Mois comme champ de partitionnement, Workday regroupe donc dans une partition unique tous les enregistrements ayant la même valeur pour Mois.
ORDER BY
ordering_field
Est obligatoire. Utilisez l'option
ORDER BY
clause pour indiquer comment trier les lignes d'entrée dans la partition en utilisant les valeurs du champ spécifié dans chaque partition. Vous pouvez indiquer n'importe quel type de champ sauf Devise.
Vous pouvez utiliser la
DESC
ou
ASC
Mots-clés pour trier par ordre décroissant (valeurs de haut à bas, les valeurs NULL sont les dernières) ou par ordre croissant (valeurs de basse à haute, les valeurs NULL sont les premières) pour chaque champ de tri. Si vous n'indiquez aucun ordre de tri pour un champ de tri, Workday trie automatiquement les lignes par ordre croissant.

Exemples

Exemple : vous disposez d'un jeu de données avec les lignes et les champs suivants.
Salarié
Date de vente
Ventes
Goh
12/31/2018
140
Goh
11/30/2018
60
Goh
10/31/2018
140
Freeman
12/31/2018
160
Freeman
11/30/2018
60
Freeman
10/31/2018
110
Smith
12/31/2018
140
Smith
11/30/2018
60
Smith
10/31/2018
120
Vous pouvez affecter un identifiant unique aux ventes de chaque salarié dans l'ordre décroissant, de sorte que les ventes les plus élevées soient classées 1. Utilisez l'expression suivante dans le champ
Nombre de ventes par salarié
 :
ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Vous obtenez les résultats suivants :
Salarié
Date de vente
Ventes
Montant des ventes par salarié
Goh
12/31/2018
140
1
Goh
10/31/2018
140
2
Goh
11/30/2018
60
3
Freeman
12/31/2018
160
1
Freeman
10/31/2018
110
2
Freeman
11/30/2018
60
3
Smith
12/31/2018
140
1
Smith
10/31/2018
120
2
Smith
11/30/2018
60
3
Vous pouvez également attribuer un identifiant unique aux ventes pour chaque date dans l'ordre décroissant, de sorte que les ventes les plus élevées soient classées 1. Utilisez l'expression suivante dans le champ
Nombre de ventes par date
 :
ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Vous obtenez les résultats suivants :
Salarié
Date de vente
Ventes
Nombre de ventes par date
Freeman
12/31/2018
160
1
Goh
12/31/2018
140
2
Smith
12/31/2018
140
3
Goh
11/30/2018
60
1
Freeman
11/30/2018
60
2
Smith
11/30/2018
60
3
Goh
10/31/2018
140
1
Smith
10/31/2018
120
2
Freeman
10/31/2018
110
3
Vous pouvez également utiliser
ROW_NUMBER
afin de déterminer la dernière version de chaque ligne d'un jeu de données contenant plusieurs lignes par identifiant. Dans ce scénario, le jeu de données requiert un champ de date qui représente la date à laquelle les informations de cette ligne sont passées à jour. Si vous avez l'habitude des concepts d'entrepôt de données, il s'agit d'une table de dimensions à modification lente de type 2. Vous disposez d'un jeu de données avec les lignes et les champs suivants.
Identifiant
Nom
Région
Date d'effet
G1
Gorman
Ouest
01/01/2015
H1
Trimestre
Ouest
01/01/2015
G1
Gorman
Est
09/01/2016
H1
Trimestre
Est
01/03/2017
H1
Trimestre
National
01/20/2021
Pour affecter la valeur 1 à la dernière version de chaque identifiant, utilisez l'expression suivante dans le champ
Dernière version
 :
ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
Vous obtenez les résultats suivants :
Identifiant
Nom
Région
Date d'effet
Dernière version
G1
Gorman
Ouest
01/01/2015
2
H1
Trimestre
Ouest
01/01/2015
3
G1
Gorman
Est
09/01/2016
1
H1
Trimestre
Est
01/03/2017
2
H1
Trimestre
National
01/20/2021
1
Vous pouvez filtrer sur
la dernière version
à l'aide d'une phase de filtre afin de renvoyer uniquement la dernière ligne pour chaque identifiant.