ホームページ >データベース >mysql チュートリアル >SQL で NULL 値を以前の非 NULL 値に置き換える方法は?

SQL で NULL 値を以前の非 NULL 値に置き換える方法は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 10:42:34895ブラウズ

How to Replace NULL Values with the Previous Non-NULL Value in SQL?

SQL で NULL 値を以前の既知の値に置き換える

SQL データベースでは、欠落値または NULL 値を含むテーブルがよく発生します。特定のシナリオでは、これらの NULL 値を前の行の最新の既知の値に置き換える必要があります。これは、欠損値によってデータ分析が中断される可能性がある時系列データを扱う場合に特に便利です。

例:

数値の時系列を表す次の表について考えてみましょう。日付によるインデックス:

date   number
----   ------
1      3
2      NULL
3      5
4      NULL
5      NULL
6      2

数値列の NULL 値を、以前の値からの最新の既知の値に置き換えたいと考えています。 行。たとえば、日付 2 には 3 を入力し、日付 4 と 5 には 5 を入力する必要があります。以下同様です。

SQL Server を使用した解決策:

DECLARE @Table TABLE(
        ID INT,
        Val INT
)

INSERT INTO @Table (ID,Val) SELECT 1, 3
INSERT INTO @Table (ID,Val) SELECT 2, NULL
INSERT INTO @Table (ID,Val) SELECT 3, 5
INSERT INTO @Table (ID,Val) SELECT 4, NULL
INSERT INTO @Table (ID,Val) SELECT 5, NULL
INSERT INTO @Table (ID,Val) SELECT 6, 2


SELECT  *,
        ISNULL(Val, (SELECT TOP 1 Val FROM @Table WHERE ID < t.ID AND Val IS NOT NULL ORDER BY ID DESC))
FROM    @Table t

このクエリはサブクエリを使用して、NULL 値を持つ各行の最新の非 NULL 値を検索します。次に、ISNULL 関数は NULL 値を選択された値に置き換えます。結果は、NULL 値が以前の既知の値に置き換えられたテーブルになります。

以上がSQL で NULL 値を以前の非 NULL 値に置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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