私の問題は単純です。一連のステータスとタイムスタンプ(好奇心のために、これらのステータスはアラームレベルを示します)を含むテーブルがあり、2つのステータス間の期間を取得するためにこのテーブルをクエリしたいと思います。
単純に見えますが、ここで注意が必要な部分があります。ルックアップテーブル、手順を作成できません。このテーブルは10億を超えるレコードを保持する小さなモンスターであるため、できるだけ高速にする必要があります(冗談ではありません!)...
スキーマは非常に単純です。
[pk]時間値
(実際には、2番目のpkがありますが、これには役に立ちません)
そして実際の例の下に:
タイムスタンプステータス 2013-1-1 00:00:00 1 2013-1-1 00:00:05 2 2013-1-1 00:00:10 2 2013-1-1 00:00:15 2 2013-1-1 00:00:20 0 2013-1-1 00:00:25 1 2013-1-1 00:00:30 2 2013-1-1 00:00:35 2 2013-1-1 00:00:40 0
レベル2アラームのみを考慮した場合、出力は次のようになります。レベル2アラームの開始と終了(0に達したとき)を報告する必要があります。
StartTime EndTime Interval 2013-1-1 00:00:05 2013-1-1 00:00:20 15 2013-1-1 00:00:30 2013-1-1 00:00:40 10
私はあらゆる種類の内部結合を試みてきましたが、それらすべてが私を驚くべきデカルト爆発に導きます。皆さんは私がこれを達成する方法を見つけるのを手伝ってくれますか?
ありがとう!