1

在下面的数据中,Event1 代表一个制造周期的结束。Event2 发生在一定百分比的周期内。我想知道是否可以在该周期内拉出循环时间结束(当 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 回答
0

Wonderware 默认使用 SQL server 标准版(加上一些花哨的额外内容),因此您应该能够使用 T-SQL 来获得您想要的东西。

http://wonderwarenorth.com.s138768.gridserver.com/support/TechTip_1004_WonderwareHistorian&DifferentRetrievalMethods.pdf

于 2014-08-23T18:20:44.727 回答