1

以下のデータでは、Event1 は製造サイクルの終わりを表します。イベント 2 は、サイクルのパーセンテージで発生します。サイクル時間の終わり (Event1 が 0 に戻るとき) と、そのサイクル中に Event2 の最大値 (0 または 1) を引き出せるかどうか疑問に思っていました。どちらの値もバイナリです。

    DateTime          Event1        Event2
    12/5/2012 07:00      1             0
    12/5/2012 07:01      0             0
    12/5/2012 07:45      1             0
    12/5/2012 07:46      0             0
    12/5/2012 07:50      0             1
    12/5/2012 07:54      0             0
    12/5/2012 08:30      1             0
    12/5/2012 08:31      0             0


    DateTime          max(Event2)
    12/5/2012 07:46      0
    12/5/2012 08:31      1

私は WonderWare ヒストリアン データベースを使用しているため、クエリには独自のオプションがいくつかあります。以下は、サイクルタイムの終了を見つけるために使用するものです。

SELECT * FROM OPENQUERY(INSQL, "SELECT DateTime
FROM WideHistory
WHERE wwRetrievalMode = 'Delta'
AND Event1 = 1
AND wwEdgeDetection = 'TRAILING'
AND wwVersion = 'Latest'
AND DateTime >= '20121205 07:00'
AND DateTime <= '20121205 09:00'")

このクエリの結果を使用して、追加のクエリの DateTime 制限を生成する方法はありますか?

4

2 に答える 2

0

標準のSQLデータベースでは、期間の開始ではなく、終了(event1が発生したとき)で期間を特徴付けます。データには終わりが含まれていますが、始まりは含まれていません。

select EndOfCycleDateTime, count(*) as NumEvents,
       max(Event2) as maxEvent2
from (select t.*,
             (select min(datetime) from t t2 where t2.datetime >= t.datetime and t2.event1 = 1
             ) as EndOfCycleDateTime
      from t
     ) t
group by EndOfCycleDateTime

これは、サブクエリを使用して、event1が1である次回を検索しています。これは、サイクル内のすべてで同じ値である必要があります。外部クエリは、この値でグループ化するだけです。

于 2012-12-05T16:34:47.950 に答える