我需要减去同一列的两行的值。这是我的查询
SELECT TOP (10) [ID], [NAME], [VALUE]
FROM [DATAINFO].[dbo].[DATA_INFO]
我想做的事的例子:
答案 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
。