ホームページ >データベース >mysql チュートリアル >LEAD と LAG を使用せずに SQL Server 2008 で隣接する行を比較するにはどうすればよいですか?

LEAD と LAG を使用せずに SQL Server 2008 で隣接する行を比較するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 13:34:18615ブラウズ

How to Compare Adjacent Rows in SQL Server 2008 Without LEAD and LAG?

SQL Server 2008 の LEAD および LAG 関数の代替

問題:

SQL Server 2008 は LEAD および LAG 機能をサポートしていません。現在の行と次の行の値を比較する方法を決定する必要があります。

解決策:

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;

このクエリは、現在の行のステータスが 1、次の行のステータスが 6、および時差を含む行を返します。 2 つの行間の間隔は 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);

以上がLEAD と LAG を使用せずに SQL Server 2008 で隣接する行を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。