有点像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])
然后我可以添加到报告中,我正在构建每个总和的最终值。目的是在外部经过时间超过给定的可接受范围时可视化/警告
鉴于下表:
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