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

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

Linda Hamilton
リリース: 2024-12-19 09:09:22
オリジナル
408 人が閲覧しました

How Can I Replicate LEAD/LAG Functionality in SQL Server 2008?

SQL Server 2008 の LEAD/LAG 関数の代替ソリューション

LEAD 関数と LAG 関数がない SQL Server 2008 を使用する場合、現在の行の値を後続の行の値と比較するときに困難に遭遇する可能性があります。ただし、この機能を実現する別の方法もあります。

イベントの進行状況を表す連続した ID を持つ行がテーブルに含まれるシナリオを考えてみましょう。目標は、現在の行のステータスが 1、次の行のステータスが 6、および 2 つの行間の時間差が最小限 (1 分未満) である行を識別することです。

目的LEAD または LAG 機能を使用しない場合は、自己結合を使用できます。次のクエリはこの操作を実行します:

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;
ログイン後にコピー

このクエリは、現在の行のステータスが 1、次の行のステータスが 6、および 2 つの行間の時間差が 未満である行を取得します。 60 秒。

より正確な一致が必要な場合、時差が同じ暦分以内に収まる必要がある場合は、追加の条件をクエリ:

AND DATEPART(MINUTE, t.MinStartTime) = DATEPART(MINUTE, tnext.MinStartTime);
ログイン後にコピー

この改訂されたクエリにより、分の時間と日付の両方のコンポーネントが一致することが保証されます。

自己結合技術を活用することで、LEAD と同様の機能を実現できます。 LAG 関数は、SQL Server 2008 の代替ソリューションを提供します。

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

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