これは、特定の日付間のデータを取得する select ステートメントです。
SELECT DISTINCT Events.Clock,Events.TagID
FROM Events
WHERE (DATEDIFF(SECOND, Events.Clock, '2013/04/20') <= 30) AND (DATEDIFF(SECOND, Events.Clock, '2013/04/21') >= 30) ORDER BY Events.TagID DESC
これが私が声明から得た結果です。
| Clock | TagID |
---------------------------------------------
1 | 2013-04-20 12:39:18 | 4CB0000060032 |
2 | 2013-04-20 12:39:16 | 4CB0000060032 |
3 | 2013-04-20 16:53:09 | 4CB0000060032 |
4 | 2013-04-20 13:22:38 | 4CB00000600EF |
5 | 2013-04-20 13:22:40 | 4CB00000600EF |
6 | 2013-04-20 15:20:56 | 4CB00000600D2 |
7 | 2013-04-20 15:17:31 | 4CB00000600D2 |
8 | 2013-04-20 15:20:58 | 4CB00000600D2 |
9 | 2013-04-20 19:33:09 | 4CB00000600D1 |
10 | 2013-04-20 20:39:16 | 4CB00000600D1 |
11 | 2013-04-20 11:10:38 | 4CB00000600D1 |
ここで、結果をさらにフィルタリングしたいと思います。時間がミリ秒単位で異なるレコードと秒単位で異なるレコードがあるため、同じ TagID と数秒後に続く時間を持つレコードを削除したい/ミリ秒。TagID の重複は問題ありませんが、時間が数秒/ミリ秒離れている場所ではありません。
したがって、レコード 2、4、6、7 は存在しません。
次に、取得したい結果は次のようになります。
| Clock | TagID |
-------------------------------------------
1 | 2013-04-20 12:39:18 | 4CB0000060032 |
2 | 2013-04-20 16:53:09 | 4CB0000060032 |
3 | 2013-04-20 13:22:40 | 4CB00000600EF |
4 | 2013-04-20 15:20:58 | 4CB00000600D2 |
5 | 2013-04-20 19:33:09 | 4CB00000600D1 |
6 | 2013-04-20 20:39:16 | 4CB00000600D1 |
7 | 2013-04-20 11:10:38 | 4CB00000600D1 |