Sql Oracle使用特定值更新最后一个条目列
我试图在Oracle Apex平台上更新表中的一行,更具体地说,是从具有相同序列号的最后一个条目中获取当前的\u指示值,并将其作为新行中的前一个\u指示。 我的表HYDRO_计数如下:Sql Oracle使用特定值更新最后一个条目列,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我试图在Oracle Apex平台上更新表中的一行,更具体地说,是从具有相同序列号的最后一个条目中获取当前的\u指示值,并将其作为新行中的前一个\u指示。 我的表HYDRO_计数如下: OID,SERIAL_NUMBER,PROV_NUMBER,HDRCNTS_PREVIOUS_IND,HDRCNTS_PRESENT_IND 到目前为止,我已经尝试了很多关于使用相同的序列号和PROV_号获取最后输入的值的查询,但是没有任何结果。这是我的更新查询 UPDATE HYDRO_COUNTS SET
OID,SERIAL_NUMBER,PROV_NUMBER,HDRCNTS_PREVIOUS_IND,HDRCNTS_PRESENT_IND
到目前为止,我已经尝试了很多关于使用相同的序列号和PROV_号获取最后输入的值的查询,但是没有任何结果。这是我的更新查询
UPDATE HYDRO_COUNTS
SET HDRCNTS_PREVIOUS_IND = (SELECT HDRCNTS_PRESENT_IND FROM HYDRO_COUNTS WHERE PROV_NUMBER =
:P20_PROV_NUMBER AND SERIAL_NUMBER = :P20_SERIAL_NUMBER )
WHERE OID = :P20_OID ;
如果OID是始终递增的唯一列,则可以执行以下操作
UPDATE HYDRO_COUNTS
SET HDRCNTS_PREVIOUS_IND = (SELECT HDRCNTS_PRESENT_IND
FROM HYDRO_COUNTS
WHERE PROV_NUMBER = :P20_PROV_NUMBER AND
SERIAL_NUMBER = :P20_SERIAL_NUMBER AND
OID = (SELECT MAX(OID)
FROM HYDRO_COUNTS
WHERE PROV_NUMBER = :P20_PROV_NUMBER AND
SERIAL_NUMBER = :P20_SERIAL_NUMBER AND
OID < :P20_OID)
WHERE OID = :P20_OID
示例数据和期望的结果将是一个很大的帮助。例如,假设我在某个日期运行测试,并将某台机器的指示插入到我的表中,一段时间后,我再次在同一台机器上运行测试,因此我希望能够查看最后的指示,为了与新指示进行比较,OID确实是通过增量序列生成的!当我读到你的答案时,语法和逻辑对我来说似乎都是对的,但出于某种未知的原因,它一直对我毫无用处。你的代码是正确的,鲍勃,我在Apex中犯了一个错误,所以它不起作用。非常感谢你的帮助,伙计!