1

各トランザクションにかかった時間のレコードを保存する監査証跡テーブルがあります

例: DateTime 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 に対して 2 つのレコードしかないことを前提としています。さらに多くのレコードがある場合は、さらにフィルタリングを行う必要があります。

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 に答える