計算 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中文網其他相關文章!