ホームページ > データベース > mysql チュートリアル > SQL Server 2005 で連続する行の値の差を計算するにはどうすればよいですか?

SQL Server 2005 で連続する行の値の差を計算するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-10 15:32:42
オリジナル
144 人が閲覧しました

How to Calculate the Difference Between Consecutive Row Values in SQL Server 2005?

SQL Server 2005 の連続する行間の差異の計算

このガイドでは、SQL Server 2005 テーブル内の連続する行値の差を計算する方法を説明します。 このソリューションでは、自己結合を利用してこの計算を効率的に実行します。

SQL クエリは次のとおりです:

<code class="language-sql">SELECT
   c.rowInt,
   c.Value,
   ISNULL(n.Value, 0) - c.Value AS Diff
FROM
   sourceTable AS c
LEFT JOIN
   sourceTable AS n
      ON n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)</code>
ログイン後にコピー

このクエリは、sourceTable (「current」の c というエイリアス) とそれ自体 (「next」の n というエイリアス) の左結合を実行します。 結合条件 n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt) は、rowInt 列に基づいて次の行を検索し、正しい順序を保証します。 ISNULL(n.Value, 0) は次の行がない場合を処理し、エラーを防ぎます。 差は n.Value - c.Value として計算され、Diff としてエイリアス化されます。

例:

次のサンプルを考えてみましょうsourceTable:

rowInt Value
2 23
3 45
9 0
17 10

クエリの出力は次のようになります:

rowInt Value Diff
2 23 22
3 45 -45
9 0 10
17 10 0

Diff 列は、現在の行の Value と次の行の Value の差を示します。 後続の行がないため、最後の行の差は 0 であることに注意してください。

以上がSQL Server 2005 で連続する行の値の差を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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