SQL Server replace NULL by the last value(SQL Server 用最后一个值替换 NULL)
本文介绍了SQL Server 用最后一个值替换 NULL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想找到一种用最后一个非空值替换空值的方法.我有一张像:
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SQL Server 用最后一个值替换 NULL


基础教程推荐
猜你喜欢
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01