本文介紹了SQL Server 用最后一個值替換 NULL的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
限時送ChatGPT賬號..
我想找到一種用最后一個非空值替換空值的方法.我有一張像:
I want to find a way to replace NULL values by the last not NULL value. I have a table like :
Date Cost
2017-01-01 18.6046511
2017-01-03 22.9787234
2017-01-03 NULL
2017-01-12 18.8584937
2017-01-16 19.1827852
2017-01-16 NULL
2017-01-19 NULL
2017-02-21 NULL
2017-03-04 24.0597622
2017-03-28 NULL
2017-04-17 33.5398414
2017-04-17 NULL
我想用最后一個非空值替換空值所以結果會是這樣的:
I want to replace NULL value by the last not NULL value so the result will be like:
Date Cost
2017-01-01 18.6046511
2017-01-03 22.9787234
2017-01-03 22.9787234
2017-01-12 18.8584937
2017-01-16 19.1827852
2017-01-16 19.1827852
2017-01-19 19.1827852
2017-02-21 19.1827852
2017-03-04 24.0597622
2017-03-28 24.0597622
2017-04-17 33.5398414
2017-04-17 33.5398414
推薦答案
您可以通過使用窗口框架 (GUWF) 創建組來嘗試以下查詢.源鏈接.
You can try the following query by creating a Group Using Window Frame (GUWF). source link.
create table MyTable ([dtDate] date, Cost decimal(18, 6))
insert into MyTable values
('2017-01-01', 18.6046511),
('2017-01-03', 22.9787234),
('2017-01-03', NULL),
('2017-01-12', 18.8584937),
('2017-01-16', 19.1827852),
('2017-01-16', NULL),
('2017-01-19', NULL),
('2017-02-21', NULL),
('2017-03-04', 24.0597622),
('2017-03-28', NULL),
('2017-04-17', 33.5398414),
('2017-04-17', NULL)
SELECT dtDate, Cost = MAX(Cost) OVER (PARTITION BY c)
FROM
(
SELECT dtDate, Cost
,c = count(Cost) OVER (ORDER BY dtDate)
FROM MyTable
) a
ORDER BY dtDate;
現場演示
這篇關于SQL Server 用最后一個值替換 NULL的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!