在下面的数据中,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限制?
答案 0 :(得分:0)
在标准SQL数据库中,我将通过 end (当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时。这应该是循环中所有内容的相同值。外部查询只按此值分组。
答案 1 :(得分:0)
Wonderware默认使用SQL Server标准版(加上历史记录中的一些额外的东西),所以你应该能够使用T-SQL来获得你想要的东西。