ホームページ >データベース >mysql チュートリアル >LEAD と LAG を使用せずに SQL Server 2008 で隣接する行を比較するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。