首页 > 解决方案 > 重复列值,直到同一列值中的值发生变化

问题描述

我的表结构:

 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)的值发生任何变化。是否可以使用窗口函数?

所需输出:

在此处输入图像描述

标签: sql-server

解决方案


您也可以通过使用窗口函数来实现这一点。尝试以下操作:

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;

请在此处找到演示。


推荐阅读