1

我试图在 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”。你能告诉我我的错误在哪里,或者我怎么能做一些不同的事情?

非常感谢

问候

4

1 回答 1

2


请记住,数据历史数据库与 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)

结果示例

于 2019-04-29T14:22:11.157 回答