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