我在Oracle SQL方面不太胜任,我已经被分配了这项任务。我希望找到具有相同id的先前记录,并计算它们的table_values之间的差异。到目前为止,我所做的是一个select,它显示了它存在的前一个值,但是我无法计算差异,并且在我的查询中得到语法错误。我试图选择*,TABLE_VALUE--以前的_VALUE,但显然我的措辞是错误的。所有的帮助都很感激!
我的守则:
SELECT *
FROM(
SELECT
TABLE_ID,
TABLE_VALUE,
YEAR,
MONTH,
LAG(TOWER_VALUE) OVER (
PARTITION BY TABLE_ID
ORDER BY YEAR,MONTH) PREVIOUS_VALUE
FROM
MY_TABLE)
;发布于 2021-05-20 10:34:40
您不需要子查询。您可以使用:
select t.*,
(tower_value -
lag(tower_value) over (partition by table_id order by year, month)
) as diff
from my_table t;如果确实使用子查询,则需要限定*。所以,在你的例子中:
select t.*,
(value - previous_value) as diff
from ( . . .
) t;换句话说,甲骨文将select *视为完整的select子句。你不能再加任何东西了。为了做您想做的事情,您需要对*进行限定,然后可以添加其他列。
https://stackoverflow.com/questions/67618538
复制相似问题