ホームページ >データベース >mysql チュートリアル >SQL Server で行内の NULL 値を前の非 NULL 値で埋める方法

SQL Server で行内の NULL 値を前の非 NULL 値で埋める方法

DDD
DDDオリジナル
2025-01-03 15:35:381015ブラウズ

How to Fill NULL Values in a Row with the Previous Non-NULL Value in SQL Server?

連続する NULL 値を以前の既知の値の値に置き換える方法

問題:

行内の NULL 値を、最後の既知の値の値に置き換える必要があります。前の日付。たとえば、日付列に値「1」、「2」、「3」、「4」、「5」が含まれており、数値列に値「3」、「NULL」、「5」、「NULL」が含まれている場合、 、" および "NULL" の場合、NULL 値はそれぞれ "3"、"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

説明:

  • ISNULL 関数は、Val 列が NULL かどうかをチェックします。存在する場合、サブクエリからの値を返します。
  • サブクエリは、ID 列が現在の行の ID 列より小さい、@Table テーブルから NULL 以外の上位 1 つの非 NULL 値を選択します。
  • ORDER BY ID DESC 句により、NULL 以外の最新の値が返されることが保証されます。

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

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