首頁 >資料庫 >mysql教程 >如何計算SQL Server 2005中連續行值之間的差異?

如何計算SQL Server 2005中連續行值之間的差異?

Patricia Arquette
Patricia Arquette原創
2025-01-10 15:32:42149瀏覽

How to Calculate the Difference Between Consecutive Row Values in SQL Server 2005?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn