在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中文網其他相關文章!