如何使用SQL查询在同一列中减去两行的值?

时间:2018-06-22 08:09:45

标签: sql sql-server

我需要减去同一列的两行的值。这是我的查询

SELECT TOP (10) [ID], [NAME], [VALUE] 
FROM [DATAINFO].[dbo].[DATA_INFO]

我想做的事的例子:

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您使用的是2012版或更高版本的SQL Server,则可以使用:

select id, name, value,
       coalesce(value - lag(value) over (partition by (select null) order by id), 0) diff
from my_table

如果LAG不可用,请使用:

select t1.*, coalesce(t1.value - t2.value, 0) diff
from my_table t1
left join my_table t2 on t1.id = t2.id + 1

COALESCE可以确保在0(即没有上一行)的情况下获得null