sql-server - 重复列值,直到同一列值中的值发生变化
问题描述
我的表结构:
declare @TestTable as table
(
id int,
somedate date,
somevalue int
)
insert into @TestTable values
(1, '2019-01-01', 1000),
(2, '2019-01-02', null ),
(3, '2019-01-03', null),
(4, '2019-01-04', null ),
(5, '2019-01-05', 800),
(6, '2019-01-06', null),
(7, '2019-01-07', null),
(8, '2019-01-08', null),
(9, '2019-01-09', null),
(10, '2019-01-10', 700)
重复列值,直到列(somevalue)的值发生任何变化。是否可以使用窗口函数?
所需输出:
解决方案
您也可以通过使用窗口函数来实现这一点。尝试以下操作:
select id, somevalue, newvalue=max(somevalue) over (partition by c)
from
(
select id, somevalue
,c=count(somevalue) over (order by id)
from @testtable
) t
order by id;
请在此处找到演示。
推荐阅读
- php - Laravel 会话不会在生产中闪烁值
- buildroot - Buildroot 中的内核源码位置
- javascript - 如何在 expo 中添加 Agora.io Android sdk?
- dart - 如何在flutter的pubspec.yaml中添加swagger依赖
- java - JavaFX + FXML 进度条没有进展?
- asp.net - IdentityCore 中 ClaimsType 的空引用异常,获取声明为空
- python - 如何在使用opencv和python检测人脸时获得单个边界框
- monit - 为什么 moint 不在本地主机上运行?
- c# - 具有多个嵌套集合的自定义配置
- python - Celery 接收周期性任务但不执行它们