我需要对表中的每个行集(Azure SQL)运行一些查询:
ID CustomerID MsgTimestamp Msg
-------------------------------------------------
1 123 2017-01-01 10:00:00 Hello
2 123 2017-01-01 10:01:00 Hello again
3 123 2017-01-01 10:02:00 Can you help me with my order
4 123 2017-01-01 11:00:00 Are you still there
5 456 2017-01-01 10:07:00 Hey I'm a new customer
我想要做的是提取"聊天会话"对于来自消息记录的每个客户,即,如果某人的两个连续消息之间的差距小于30分钟,则它们属于同一会话。我需要在新表中记录每个会话的开始和结束时间。在上面的示例中,客户123的第一个会话的开始和结束时间是10:00和10:02。
我知道我总是可以使用游标和临时表来实现这个目标,但我正在考虑利用任何预先构建的机制来达到更好的性能。请给我一些意见。