SQL 计算两列之间差异的命令

SQL Command to calculate difference between 2 columns

我不太擅长 Oracle SQL,我被分配了这个任务。我想找到具有相同 id 的以前的记录,并计算它们 table_values 之间的差异。到目前为止我所做的是一个 select 显示它存在的先前值,但是我无法计算差异并且我在查询中遇到语法错误。我试过 SELECT *,TABLE_VALUE-PREVIOUS_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)
;

您不需要子查询。您可以使用:

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;

换句话说,Oracle 将select * 视为完整的select 子句。您不能向其中添加任何其他内容。为了做你想做的事,你需要 限定 * 然后你可以添加额外的列。