在Aspen SQLPLUS查询中获取值和上一个值?

在Aspen SQLPLUS查询中获取值和上一个值?,sqlplus,lag,aspen,Sqlplus,Lag,Aspen,我试图在Aspen V8.8查询中使用SQLPLUS之前获取一个值和该值 我在Oracle库中找到了对我来说似乎很完美的函数“LAG”。但是我在使用这个函数时会出错 下面是我的代码: SELECT IP_TREND_VALUE, IP_TREND_TIME, LAG(IP_TREND_VALUE,1,0) OVER (ORDER BY IP_TREND_TIME) as valeur_prec from IP_DIDef_1 WHERE name='my_value' and IP_TREND

我试图在Aspen V8.8查询中使用SQLPLUS之前获取一个值和该值

我在Oracle库中找到了对我来说似乎很完美的函数“LAG”。但是我在使用这个函数时会出错

下面是我的代码:

SELECT IP_TREND_VALUE, IP_TREND_TIME, LAG(IP_TREND_VALUE,1,0) OVER (ORDER BY IP_TREND_TIME)  as valeur_prec from IP_DIDef_1 WHERE name='my_value' and IP_TREND_TIME BETWEEN '15-APR-19 00:00:00' and '28-APR-19 00:00:00' ORDER BY IP_TREND_TIME
使用这段代码,我得到了一个错误“期望保留字来自”。 你能告诉我我的错误在哪里,或者我如何做才能让事情变得不同吗

非常感谢


关于


请记住,数据历史记录远不是SGBD数据库。即使可以通过ODBC驱动程序使用,SqlPlus语法也不是标准Sql,甚至与Oracle或SqlServer Sql更为不同。
话虽如此,我的猜测(我想您对记录的数据感兴趣,而不是插值的数据)是:

LOCAL dTs1 TIMESTAMP;
LOCAL dTs2 TIMESTAMP;

dTs1 = (
    SELECT MAX(IP_TREND_TIME)
    FROM "[Tag name]"
    WHERE IP_TREND_TIME BETWEEN '15-APR-19 00:00:00' AND '28-APR-19 00:00:00'
    AND ABS(IP_TREND_VALUE - [value you search]) < [precision you are ok with]
);

--WRITE dTs1;

SET MAX_ROWS = 1;
dTs2 = (
    SELECT IP_TREND_TIME
    FROM "[Tag name]"
    WHERE IP_TREND_TIME >= '15-APR-19 00:00:00' AND IP_TREND_TIME < dTs1
);

--WRITE dts2;

SET MAX_ROWS = 2;
SELECT IP_TREND_TIME, IP_TREND_VALUE
FROM "[Tag name]"
WHERE IP_TREND_TIME IN (dTs1, dTs2)
本地dTs1时间戳;
本地dTs2时间戳;
dTs1=(
选择最大值(IP\U趋势\U时间)
来自“[标记名]”
其中,“19年4月15日00:00:00”和“19年4月28日00:00:00”之间的IP_趋势时间
和ABS(IP_趋势_值-[您搜索的值])<[精度您可以接受]
);
--写入dTs1;
设置最大行数=1;
dTs2=(
选择IP\u趋势\u时间
来自“[标记名]”
其中IP_趋势时间>='19年4月15日00:00:00'和IP_趋势时间

代码是有效的SQL,看起来不像Oracle错误消息。(所有Oracle错误消息的前面都有一个类似“ORA-XYZ”的字符串。)我猜这是在引入分析函数之前创建的旧版本Aspen的问题,程序不知道如何解析该语句。非常感谢您的回答!老实说,我不知道sgbd和sql之间的区别。我只是猜测Aspen选择或必须有一个修改过的sql。。。明天回办公室时我会试试你的代码再次感谢!