【问题标题】:SQL Finding max value of column during range defined by state of other columnSQL在其他列的状态定义的范围内查找列的最大值
【发布时间】:2012-12-05 16:07:00
【问题描述】:

在下面的数据中,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'")

有没有办法使用这个查询的结果来生成附加查询的日期时间限制?

【问题讨论】:

  • Wonderware 似乎与 SQL Server 非常相关。你知道它基于哪个版本的 SQL Server 吗?
  • 服务器软件:Microsoft-IIS/6.0 Wonderware Information Server 4.0.100 and Build Version 1463.15.30.0

标签: sql historian wonderware


【解决方案1】:

在标准 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 的时间。对于循环中的所有内容,这应该是相同的值。外部查询仅按此值分组。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多