【发布时间】:2017-12-21 16:24:25
【问题描述】:
有点 SQL 爱好者,所以坚持使用 VantagePoint 的 SQL CLR 后处理插件将简单的 C++/Python/Excel 函数转换为 SQL 查询。想做类似这个 excel 功能的事情,所以我只有时间戳和值。如果读数的值小于下限,则希望计算读数之间的总经过时间,然后添加到该运行总和,对于高于下限的读数的运行总和也是如此。
https://image.ibb.co/dJr0kR/SQLTime_Diff.png
这将是普通的伪代码,但不确定如何使用 CLR 将其转换为 SQL
foreach(row)
if(value < lowLimit)
lowSum += (time[row] - time[row - 1])
if(value > highLimit)
highSum +=(time[row] - time[row - 1])
然后我可以添加到报告中,我正在为每个总和建立最终值。目的是在超出限制的经过时间大于给定的可接受范围时进行可视化/警报
【问题讨论】:
-
什么版本的 SQL?你能告诉我们所涉及的表格的结构吗?示例数据也会有所帮助。
-
哪个dbms???? SQL 只是多个 dbms 供应商使用的一种语言。它们每个都有自己的语法。
-
MMSQL 2012。最终将使用 PH 值,但现在使用有利位置提供的示例数据这是我可以提取的历史数据image.ibb.co/c5NyN6/so1.png 所以我最终只需要在限制 y 下 x 秒超过限制的秒数 这是提供的 Rockwell Vantage Point 存储过程 image.ibb.co/e6Nhh6/so2.png
-
以及 sum_in_state 擅长什么image.ibb.co/fyJNh6/so5.png
-
问题仍然是我无法在 sql 中复制 #timeseries。我已经尝试将其修剪为此,但无法从历史表中获取 rowID 我可以生成image.ibb.co/cREpUm/so6.png 这是我可以从历史数据中提取的完整可用数据,我需要的只是时间戳和 valueasfloat,将当我得到实际数据时有类似的数据image.ibb.co/fXChh6/so7.png
标签: sql sql-server tsql datediff