计算 SQL Server 2005 中连续行之间的差异
本指南演示如何计算 SQL Server 2005 表中连续行值之间的差异。 该解决方案利用自连接来有效地实现此计算。
这是 SQL 查询:
<code class="language-sql">SELECT c.rowInt, c.Value, ISNULL(n.Value, 0) - c.Value AS Diff FROM sourceTable AS c LEFT JOIN sourceTable AS n ON n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)</code>
此查询执行 sourceTable
(别名为 c
表示“当前”)与其自身(别名为 n
表示“下一个”)的左连接。 连接条件n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)
根据rowInt
列查找下一行,确保顺序正确。 ISNULL(n.Value, 0)
处理没有下一行的情况,防止错误。 差异计算为 n.Value - c.Value
并别名为 Diff
.
示例:
考虑这个示例sourceTable
:
rowInt | Value |
---|---|
2 | 23 |
3 | 45 |
9 | 0 |
17 | 10 |
查询的输出将是:
rowInt | Value | Diff |
---|---|---|
2 | 23 | 22 |
3 | 45 | -45 |
9 | 0 | 10 |
17 | 10 | 0 |
Diff
列显示当前行的 Value
与下一行的 Value
之间的差异。 请注意,最后一行的差异为 0,因为没有后续行。
以上是如何计算SQL Server 2005中连续行值之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!