ホームページ > データベース > mysql チュートリアル > SQL は時間の経過に伴う列値の変化をどのように識別できるのでしょうか?

SQL は時間の経過に伴う列値の変化をどのように識別できるのでしょうか?

Mary-Kate Olsen
リリース: 2024-12-21 18:54:09
オリジナル
816 人が閲覧しました

How Can SQL Identify Changes in Column Values Over Time?

SQL を使用した列値の変更の特定

問題:

2 つの列 (Value と ) を持つテーブルがあるとします。時間。 Value 列が変更された行を特定したいと考えています。つまり、星付きの行で示される、保存された値が変更された瞬間を見つける必要があります。

解決策:

この問題を解決する 1 つのアプローチには、ウィンドウを活用することが含まれます。 SQL ステートメント内の関数と行番号:

  1. 行の導入Numbers:

    WITH x AS (
        SELECT value, time, rn = ROW_NUMBER() OVER (PARTITION BY Value ORDER BY Time)
        FROM dbo.table
    )
    ログイン後にコピー

    このステップでは、rn (行番号) と呼ばれる新しい列を導入し、各値パーティション内の各行に時間の昇順で一意のシーケンス番号を割り当てます。

  2. 識別変更:

    SELECT * FROM x WHERE rn = 1;
    ログイン後にコピー

    このクエリは、rn が 1 に等しい行のみを含むように結果をフィルター処理します。これらは、各値パーティションの最初の行であり、値の変更の開始を表します。

上下に関する追加の考慮事項値:

値列が増加または減少する可能性がある場合は、より複雑なアプローチが必要です:

  1. 一時テーブルの作成:

    DECLARE @x TABLE(value INT, [time] DATETIME)
    
    INSERT @x VALUES
    (0,'20120615 8:03:43 PM'),
    (1,'20120615 8:03:43 PM'),
    (1,'20120615 8:03:48 PM'),
    (1,'20120615 8:03:53 PM'),
    (1,'20120615 8:03:58 PM'),
    (2,'20120615 8:04:03 PM'),
    (2,'20120615 8:04:08 PM'),
    (3,'20120615 8:04:13 PM'),
    (3,'20120615 8:04:18 PM'),
    (3,'20120615 8:04:23 PM'),
    (2,'20120615 8:04:28 PM'),
    (2,'20120615 8:04:33 PM');
    ログイン後にコピー

    サンプル データを使用して一時テーブルを作成して、次のことを説明します。 process.

  2. 行番号の導入 (再度):

    WITH x AS (
        SELECT *, rn = ROW_NUMBER() OVER (ORDER BY time)
        FROM @x
    )
    ログイン後にコピー
  3. 値の変更の特定:

    SELECT x.value, x.[time]
    FROM x LEFT OUTER JOIN x AS y
    ON x.rn = y.rn + 1
    AND x.value <> y.value
    WHERE y.value IS NOT NULL;
    ログイン後にコピー

    このクエリ行番号を持つテーブルとそれ自体のシフトされたバージョン (y) の間で左外部結合を実行し、隣接する行間の値列の変更をチェックします。 y.value に NULL 以外の値が含まれる行は変更を表します。

以上がSQL は時間の経過に伴う列値の変化をどのように識別できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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