<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />In una tabella JMP, qual è il metodo più noto per eseguire l'equivalente di ROW_NUMBER () OVER ([PARTITION BY value_expression, ... [n]] ORDER BY ...) che possiamo fare in SQL (come Transact-SQL)?
Per la versione T-SQL vedere: https://msdn.microsoft.com/en-us/library/ms186734.aspx
Se ho questa tabella di esempio:
| Nome | Cibo |
|---|
| Alice | Crostini |
| peso | arancia |
| Alice | Mela |
| Charlie | Pizza |
| peso | Pomodoro |
E voglio aggiungere una colonna "numero di istanza" che mi dà l'istanza di quella persona sulla base di un ordinamento alfabetico su cibo ...
Nome
| Cibo | Esempio
|
|---|
| Alice | Crostini | 2 |
| peso | arancia | 1 |
| Alice | Mela | 1 |
| Charlie | Pizza | 1 |
| peso | Pomodoro | 2 |
(L'ordine della tabella di output non ha importanza.)
Un metodo che ho trovato finora è quello di ordinare la tabella di input per (Nome, Cibo) e aggiungere una colonna formula:
If (Row () == 1, 1, If (Lag (: Name, 1) ==: Name, Lag (: Instance, 1) + 1, 1))
È questo il modo più semplice per simulare la funzione ROW_NUMBER SQL o JMP offre un modo più conveniente?
La cosa più vicina a cui riesco a pensare è Col Rank (), ma al momento non supporta variabili BY o colonne di caratteri.