首頁 > 資料庫 > mysql教程 > 如何在 SQL Server 2008 中複製 SQL LEAD 和 LAG 功能?

如何在 SQL Server 2008 中複製 SQL LEAD 和 LAG 功能?

Patricia Arquette
發布: 2024-12-17 22:27:11
原創
978 人瀏覽過

How to Replicate SQL LEAD and LAG Functionality in SQL Server 2008?

SQL Server 2008 中SQL LEAD 和LAG 函數的替代品

在SQL Server 2008 中,LEAD 和LAG 函數不可用,這可以比較連續行之間的值時會帶來挑戰。本指南提供了實現類似功能的替代方法。

問題陳述

目標是識別目前行的 StatusId 為 1 的行以及後續行StatusId 為 6,時間在同一分鐘內。例如,在提供的表中,我們要檢索行 Id 6,因為行 Id 6 的 StatusId 為 1,行 Id 7 的 StatusId 為 6,它們的時間基本上相同:2014-02-19 06: 11.

解決方案1:自加入

一個方法是自連接:

select t.*
from table t join
     table tnext
     on t.id = tnext.id - 1 and
        t.StatusId = 1 and
        tnext.StatusId = 6 and
        datediff(second, t.MinStartTime, tnext.MinStartTime) < 60;
登入後複製

此查詢一行的Id 小1 的行,目前行的StatusId 為1,下一行的StatusId 為6。下一行,並且它們之間的時間差在 60 秒內。

解決方案2:相同日曆分鐘

如果你要求時間在同一個日曆分鐘內,你可以修改查詢如下:

select t.*
from table t join
     table tnext
     on t.id = tnext.id - 1 and
        t.StatusId = 1 and
        tnext.StatusId = 6 and
        datediff(second, t.MinStartTime, tnext.MinStartTime) < 60 and
        datepart(minute, t.MinStartTime) = datepart(minute, tnext.MinStartTime);
登入後複製

這個查詢另外檢查兩個時間是否在同一日曆分鐘內行相等,確保它們屬於同一日曆分鐘。

以上是如何在 SQL Server 2008 中複製 SQL LEAD 和 LAG 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板