在Aspen SQLPLUS查询中获取值和以前的值?

时间:2019-04-28 20:44:09

标签: 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_TIME BETWEEN '15-APR-19 00:00:00' and '28-APR-19 00:00:00' ORDER BY IP_TREND_TIME

使用此代码,我得到一个错误“期望保留字FROM”。 你能告诉我我的错误在哪里,或者我怎么做才能使事情有所不同?

非常感谢

致谢

1 个答案:

答案 0 :(得分:1)


请记住,数据历史学家离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)

Example of result