在 SQL SELECT 查詢中擷取前一行資料
本指南解決了計算 SQL 表中連續行之間差異的挑戰。 由於標準 SQL 中缺乏固有的行順序考慮,簡單的減法是不夠的。 此解決方案涉及利用 LAG
函數。
LAG
函數從 SELECT
語句中前面的行檢索資料。 其語法為:
<code class="language-sql">LAG(column_name, offset, default) OVER (ORDER BY order_column)</code>
這是一個細分:
column_name
:包含上一行所需資料的欄位。 offset
:指定要回溯的行數(1 表示緊鄰的前一行)。 default
:offset
超過第一行時傳回的值。 order_column
:定義行順序的欄位。 實作範例:
要計算連續 value
條目之間的差異,依 Id
欄位排序:
<code class="language-sql">SELECT value - LAG(value, 1, 0) OVER (ORDER BY Id) AS difference FROM your_table;</code>
此查詢從目前行的 value
中減去前一行的 value
(偏移量 1)。 Id
欄位確保正確的排序,防止非順序 Id
值造成的問題。 0
預設處理第一行,避免錯誤。 結果是一個新的 difference
列,顯示計算出的變化。
以上是如何在 SQL SELECT 語句中存取和使用前一行值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!