一位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])
然后我可以在报告中添加每个总和的最终值。目的是在外部经过时间超过给定的可接受范围时可视化/警告
答案 0 :(得分:2)
鉴于下表:
CREATE TABLE TableA (RowDate DATETIME, val INT)
您可以使用LAG()
函数获取上一个时间戳值。然后将其放入SUM()
,如果val
值小于lowLimit为5或大于highLimit为6,则只添加delta。
SELECT
lowSum = SUM(CASE WHEN val < 5 THEN DATEDIFF(minute,RowDate,LAG(RowDate) OVER (ORDER BY RowDate ASC)) END)
,highSum = SUM(CASE WHEN val > 6 THEN DATEDIFF(minute,RowDate,LAG(RowDate) OVER (ORDER BY RowDate ASC)) END)
FROM TableA