は、私のような私のソーステーブルを持っていたSQL Serverクエリは、最近私が要件に出くわした出現箇所
テーブルには、上記Machine_Name| Time | Alarm
------------|---------------------|---------
Mac1 | 2016-11-22 05:15 | 0
Mac1 | 2016-11-22 05:30 | 1
Mac1 | 2016-11-22 05:45 | 1
Mac1 | 2016-11-22 06:00 | 0
Mac1 | 2016-11-22 06:15 | 1
Mac1 | 2016-11-22 06:30 | 1
Mac1 | 2016-11-22 06:45 | 1
Mac1 | 2016-11-22 07:00 | 1
Mac1 | 2016-11-22 07:15 | 1
Mac1 | 2016-11-22 07:30 | 1
Mac2 | 2016-11-22 05:15 | 0
Mac2 | 2016-11-22 05:30 | 0
Mac2 | 2016-11-22 05:45 | 1
Mac2 | 2016-11-22 06:00 | 1
Mac2 | 2016-11-22 06:15 | 1
Mac2 | 2016-11-22 06:30 | 1
Mac2 | 2016-11-22 06:45 | 0
Mac2 | 2016-11-22 07:00 | 1
施設に設置差機械の詳細とのためにその '課題アラームのステータスを継続します各期間(各15分間隔)。
このアラームの関連性を計算する必要があります。任意の単一のアラームの場合、関連性は25%です。マシンが4つの連続した期間(1時間)アラームを発生させた場合、最大の関連性を100%保存します。
アラームが4つ以上の連続した期間(1時間)以上発生した場合、関連性は同じ100%のままです。
上記のソーステーブルから設定期待される結果は以下のように、ある
Machine_Name| Time | Alarm | Alert_Relevancy(%)
------------|---------------------|---------|---------------
Mac1 | 2016-11-22 05:15 | 0 | 0
Mac1 | 2016-11-22 05:30 | 1 | 25
Mac1 | 2016-11-22 05:45 | 1 | 50
Mac1 | 2016-11-22 06:00 | 0 | 0
Mac1 | 2016-11-22 06:15 | 1 | 25
Mac1 | 2016-11-22 06:30 | 1 | 50
Mac1 | 2016-11-22 06:45 | 1 | 75
Mac1 | 2016-11-22 07:00 | 1 | 100
Mac1 | 2016-11-22 07:15 | 1 | 100
Mac1 | 2016-11-22 07:30 | 1 | 100
Mac2 | 2016-11-22 05:15 | 0 | 0
Mac2 | 2016-11-22 05:30 | 0 | 0
Mac2 | 2016-11-22 05:45 | 1 | 25
Mac2 | 2016-11-22 06:00 | 1 | 50
Mac2 | 2016-11-22 06:15 | 1 | 75
Mac2 | 2016-11-22 06:30 | 1 | 100
Mac2 | 2016-11-22 06:45 | 0 | 0
Mac2 | 2016-11-22 07:00 | 1 | 25
そして、私もそれは最小4連続上げるのみアラームシリーズを選択するクエリを取得することができれば、それは素晴らしいことだろう回(関連性は100に達した)。
予想される第2の結果セットは、少なくとも4回連続して1ではないアラームシリーズを削除した場合、次のようになります。
Machine_Name| Time | Alarm | Alert_Relevancy(%)
------------|---------------------|---------|---------------
Mac1 | 2016-11-22 06:15 | 1 | 25
Mac1 | 2016-11-22 06:30 | 1 | 50
Mac1 | 2016-11-22 06:45 | 1 | 75
Mac1 | 2016-11-22 07:00 | 1 | 100
Mac1 | 2016-11-22 07:15 | 1 | 100
Mac1 | 2016-11-22 07:30 | 1 | 100
Mac2 | 2016-11-22 05:45 | 1 | 25
Mac2 | 2016-11-22 06:00 | 1 | 50
Mac2 | 2016-11-22 06:15 | 1 | 75
Mac2 | 2016-11-22 06:30 | 1 | 100
ご提案/クエリサンプルをお待ちしております。
よろしく、ROW_NUMBERとCTEと再帰CTE
を使用して RON
? MSSQL 2012+でラグ関数とリード関数を使用できる場合は、CTEを使用できます。編集:あなたはあなたの前の質問からだと仮定します.. – Matt
あなたは、セットベースの解決策を介してレコードによって記録されるソリューションを選択しました。 –
こんにちはモートブ、申し訳ありませんが、私は最初に試したものをコンテンツに含めませんでした。私の悪い。私はCTEメソッドを試しましたが、アンカーレコードが間違って設定されているため、正確な結果に到達できませんでした。しかし、後のLukStormは、私が探していた正確な解決策を投稿しました。質問のスニペットを含めるようにします。ありがとうございました。 –