我需要计算表格两行之间一列的差异。有什么方法可以直接在 SQL 中执行此操作吗?我正在使用 Microsoft SQL Server 2008。
我正在寻找这样的东西:
SELECT value - (previous.value) FROM table
想象一下“previous”变量引用了最新选择的行。当然,通过这样的选择,我最终会在一个有 n 行的表中选择 n-1 行,这不是可能的,实际上正是我需要的。
这在某种程度上可能吗?
原文由 Edwin Jarvis 发布,翻译遵循 CC BY-SA 4.0 许可协议
SQL 没有内置的顺序概念,因此您需要按某个列进行排序才能有意义。像这样的东西:
如果您知道如何排序,但不知道如何在给定当前值的情况下获取前一个值(EG,您想按字母顺序排序),那么我不知道在标准 SQL 中这样做的方法,但大多数 SQL 实现都会有扩展来做到这一点。
如果您可以对行进行排序以使每个行都不同,那么这是一种适用于 SQL Server 的方法:
如果您需要打破平局,您可以根据需要向 ORDER BY 添加尽可能多的列。