ホームページ > データベース > mysql チュートリアル > SQL Server 2008 で LEAD および LAG 機能をレプリケートするにはどうすればよいですか?

SQL Server 2008 で LEAD および LAG 機能をレプリケートするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-30 19:14:17
オリジナル
766 人が閲覧しました

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

SQL Server 2008 の LEAD 関数と LAG 関数の代替

SQL Server 2008 には、SQL Server 2008 にアクセスするために使用される LEAD 関数と LAG 関数がありません。シーケンス内の次の値と前の値。ただし、同様の機能を実現する別の方法もあります。

問題ステートメント

現在の行のステータスを後続の行のステータスと比較するシナリオを考えてみましょう。具体的には、現在の行のステータスが「1」で次の行のステータスが「6」である行を識別し、これらの行のタイムスタンプが分まで一致していることを確認することを目的としています。

解決策

SQL Server 2008 でこれを実現する 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;
ログイン後にコピー

このクエリは、指定された条件に基づいて現在の行 (t) と後続の行 (tnext) を効果的に比較します。 datediff 関数は、タイムスタンプ間の時間差が 60 秒を超えないことを保証します。

カレンダー時間の分の厳密な一致が必要な場合は、次のようにクエリを変更できることに注意してください。

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 の LEAD 関数および LAG 関数と同様の機能を実現できます。

以上がSQL Server 2008 で LEAD および LAG 機能をレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート