SQL で行内の NULL 値を以前の既知の値に置き換える方法
データベース管理では、NULL 値が必要な状況が発生することがあります。意味のあるデータに置き換えられます。一般的なシナリオの 1 つは、列にデータが欠落しており、隣接する行からデータを推測する必要がある場合です。
2 つの列、'date' と 'number' を持つテーブルを考えてみましょう:
date number ---- ------ 1 3 2 NULL 3 5 4 NULL 5 NULL 6 2
目標は、「number」列の NULL 値を「date」列の最新の非 NULL 値に置き換えることです。これは、日付 2 の「数値」が NULL の場合、3 (以前の既知の値) に置き換える必要があることを意味します。同様に、日付 4 と 5 の NULL 値は 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 値を持つ各行の「Val」列で最初の非 NULL 値を検索します。次に、ISNULL 関数を使用して、NULL 値を選択した非 NULL 値で置き換えます。
クエリの結果は次のとおりです。
date number ---- ------ 1 3 2 3 3 5 4 5 5 5 6 2
'number 内の NULL 値' 列は、'date' 列の最新の非 NULL 値に正常に置き換えられました。この手法は、さまざまなデータベース シナリオで欠落データを埋めたり、データの整合性を確保したりするのに役立ちます。
以上が最新の非 NULL 値を使用して SQL に NULL 値を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。