3 回答

TA貢獻1966條經驗 獲得超4個贊
SELECT rowInt, Value,
COALESCE(
(
SELECT TOP 1 Value
FROM myTable mi
WHERE mi.rowInt > m.rowInt
ORDER BY
rowInt
), 0) - Value AS diff
FROM myTable m
ORDER BY
rowInt

TA貢獻1865條經驗 獲得超7個贊
SQL Server 2012及更高版本支持LAG / LEAD函數來訪問上一行或下一行。SQL Server 2005不支持此功能(在SQL2005中,您需要聯接或其他方式)。
有關此數據的SQL 2012示例
/* Prepare */
select * into #tmp
from
(
select 2 as rowint, 23 as Value
union select 3, 45
union select 17, 10
union select 9, 0
) x
/* The SQL 2012 query */
select rowInt, Value, LEAD(value) over (order by rowInt) - Value
from #tmp
LEAD(value)將返回“ over”子句中給定順序的下一行的值。
- 3 回答
- 0 關注
- 430 瀏覽
添加回答
舉報