Tôi có một bảng với một loạt các giá trị (IP varchar (15), DateTime datetime2). Mỗi hàng tương ứng với yêu cầu HTTP do người dùng thực hiện. Tôi muốn chỉ định số phiên cho các hàng này. Các địa chỉ IP khác nhau có số phiên khác nhau. Cùng một IP sẽ được chỉ định một số phiên mới nếu yêu cầu cuối cùng cũ hơn 30 phút. Đây là đầu ra mẫu:Máy chủ SQL: row_number được phân đoạn theo 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)
Cột 1 và 2 là đầu vào, 3 và 4 là kết quả mong muốn. Bảng này hiển thị hai người dùng.
Vì bảng bên dưới là thực sự lớn, cách này có thể được giải quyết hiệu quả? Tôi muốn một số lượng nhỏ đi qua dữ liệu (một hoặc hai).
Phiên bản SQL Server nào? Nếu năm 2012, chức năng điều khoản 'OVER' mới sẽ giúp ích. –
Có, đó là SQL Server 2012. – usr