SQL Server之前2008-12选择第一和第二条记录X
我有表:
InteractionKey char(18)
dEventTime datetime
SeqNo int
cEventData1
将有每InteractionKey多个条目 - dEventTime只出去秒和的SeqNo递增如果两个条目在同一秒出现。
我需要做的是选择第一和第二条记录的记录,其中
cEventData1 = 'Disconnect'
最终产品会给我通过cEventData1分组发生计数了。
我目前使用的游标(将光标源更新暂时),我想用一个CTE- 但我真的理解他们的斗争......
任何想法,将不胜感激!
与数据采集更新
INTERACTIONKEY dEventTime SeqNo cEventData1
100186322420130722 2013-07-22 11:50:49.000 1 EnterPassword
100186322420130722 2013-07-22 11:50:49.000 2 CheckPassword
100186322420130722 2013-07-22 11:50:49.000 3 Attendant Disconnect
查询将最好告诉我的结果 - :这里要注意的行动列可以是简单的“话务员断开”作为行动
cEventData1 Action Count
CheckPassword Attendant Disconnect 1
以下是我最终根据以下回答进行的查询:
SELECT DISTINCT t1.InteractionKey,
DisconnectTime = t1.dEventTime,
PreviousEventTime = t2.dEventTime,
PreviousEvent = t2.cEventData1,
t2.SeqNo
FROM IVRHistory t1
OUTER APPLY
( SELECT TOP 1 t2.dEventTime, t2.SeqNo, t2.cEventData1
FROM IVRHistory t2
WHERE t1.InteractionKey = t2.InteractionKey
AND t1.dEventTime >= t2.dEventTime
AND t1.SeqNo > t2.SeqNo
AND t2.cEventData1 <> 'Attendant Disconnect'
ORDER BY t2.dEventTime DESC, t2.SeqNo DESC
) t2
WHERE t1.cEventData1 = 'Attendant Disconnect'
您能否给一些模拟数据,你想要什么的例子吗? – christiandev
@zimdanen现在看看,谢谢。 – Wjdavis5