1

我有一个审计跟踪表,我在其中存储每笔交易所用时间的记录

例如:日期时间 ReferenceID 状态
2012-08-29 18:54:22 abc
2012-08-29 18:54:28 abc 成功
2012-08-29 18:54:32 abcd
2012-08-29 18:54:48 abcd成功

我想找出所有花费超过 10 秒的记录。

我的输出应该类似于
ReferenceID TimeTaken
abcd 16

谢谢索尼

4

1 回答 1

1

您可以在表上从具有空白状态的记录到相应的成功记录进行自联接,并计算它们之间的差异。此查询假设您只有每个 ReferenceID 的两条记录,如果可能有更多,您将不得不做一些进一步的过滤。

select d1.ReferenceID,
  TimeStampDiff(SECOND, d1.Dttm, d2.Dttm) TimeTaken
from data d1
left join data d2 on d2.ReferenceID = d1.ReferenceID
  and d2.Status = 'Success'
where d1.Status = ''
  and TimeStampDiff(SECOND, d1.Dttm, d2.Dttm) > 10

SQL小提琴

于 2012-08-29T22:09:06.137 回答