<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Dans une table JMP, quelle est la méthode la plus connue pour effectuer l'équivalent de ROW_NUMBER () OVER ([PARTITION BY valeur_expression, ... [n]] ORDER BY ...) que nous pouvons faire en SQL (comme Transact-SQL)?
Pour la version T-SQL, voir: https://msdn.microsoft.com/en-us/library/ms186734.aspx
Si j'ai cet exemple de table:
| prénom | Aliments |
|---|
| Alice | Pain grillé |
| Bob | Orange |
| Alice | Pomme |
| Charlie | Pizza |
| Bob | Tomate |
Et je veux ajouter une colonne "numéro d'instance" qui me donne l'instance de cette personne basée sur un tri alphabétique des aliments ...
prénom
| Aliments | Exemple
|
|---|
| Alice | Pain grillé | 2 |
| Bob | Orange | 1 |
| Alice | Pomme | 1 |
| Charlie | Pizza | 1 |
| Bob | Tomate | 2 |
(L'ordre de la table de sortie n'a pas d'importance.)
Une méthode que j'ai trouvée jusqu'ici consiste à trier le tableau d'entrée par (nom, aliment) et à ajouter une colonne de formule
If (Row () == 1, 1, If (Lag (: Nom, 1) ==: Nom, Lag (: Instance, 1) + 1, 1))
Est-ce le moyen le plus simple d'imiter la fonction SQL ROW_NUMBER ou JMP offre-t-il un moyen plus pratique?
La chose la plus proche à laquelle je puisse penser est Col Rank (), mais il ne prend actuellement pas en charge les variables BY ou les colonnes de caractères.