Ho una tabella con una serie di valori (IP varchar (15), DateTime datetime2). Ogni riga corrisponde a una richiesta HTTP effettuata da un utente. Voglio assegnare i numeri di sessione a queste righe. Indirizzi IP diversi hanno numeri di sessione diversi. Lo stesso IP deve essere assegnato a un nuovo numero di sessione se l'ultima richiesta è precedente a 30 minuti. Ecco un esempio di output:SQL Server: row_number partizionato dal timeout
IP, DateTime, SessionNumber, RequestNumber
1.1.1.1, 2012-01-01 00:01, 1, 1
1.1.1.1, 2012-01-01 00:02, 1, 2
1.1.1.1, 2012-01-01 00:03, 1, 3
1.1.1.2, 2012-01-01 00:04, 2, 1 --different IP => new session number
1.1.1.2, 2012-01-01 00:05, 2, 2
1.1.1.2, 2012-01-01 00:40, 3, 1 --same IP, but last request 35min ago (> 30min)
colonne 1 e 2 sono ingressi, 3 e 4 sono le uscite desiderate. La tabella mostra due utenti.
Poiché la tabella sottostante è veramente grande, come può essere risolto in modo efficiente? Preferirei una piccola quantità costante di passaggi sui dati (uno o due).
Quale versione di SQL Server? Se 2012 la nuova clausola 'OVER' funzionerà. –
Sì, è SQL Server 2012. – usr