我有以下两列。
Date | Market Value
------------------------------
2016-09-08 | 100
2016-09-07 | 130
2016-09-06 | 140
2016-09-05 | 180
我想添加一列来计算两个日期之间的市场值(value)
差异。
Date | Market Value | Delta
------------------------------------------
2016-09-08 | 100 | -30
2016-09-07 | 130 | -10
2016-09-06 | 140 | -40
2016-09-05 | 180 |
.
100 (2016-09-08) minus 130 (2016-09-07) = -30
如何编写该函数?
最佳答案
在 SQL Server 2012+ 中,最有效、最简单的方法是使用内置的 LEAD
功能。
SELECT
[Date]
,[Market Value]
,LEAD([Market Value]) OVER (ORDER BY [Date] DESC) - [Market Value] AS Delta
FROM YourTable
;
LEAD
返回其 ORDER BY
子句指定的下一行的值。
所有其他自连接表的方法效率较低。
关于SQL 日期之间的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39391939/