replace NULL values with latest non-NULL value in resultset series (SQL Server 2008 R2)

前端 未结 3 730
执笔经年
执笔经年 2020-12-10 06:55

for SQL Server 2008 R2

I have a resultset that looks like this (note [price] is numeric, NULL below represents a NULL value, the result set is ordered by product_i

3条回答
  •  渐次进展
    2020-12-10 07:52

    I have a table containing the following data. I want to update all nulls in salary columns with previous value without taking null value.

    Table:

    id  name    salary
    1   A       4000
    2   B   
    3   C   
    4   C   
    5   D       2000
    6   E   
    7   E   
    8   F       1000
    9   G       2000
    10  G       3000
    11  G       5000
    12  G   
    

    here is the query that works for me.

    select a.*,first_value(a.salary)over(partition by a.value order by a.id) as abc from
    (
         select *,sum(case when salary is null then 0 else 1 end)over(order by id) as value from test)a
    

    output:

    id  name    salary  Value   abc
    1   A       4000    1     4000
    2   B               1     4000
    3   C               1     4000
    4   C               1     4000
    5   D       2000    2     2000
    6   E               2     2000
    7   E               2     2000
    8   F       1000    3     1000
    9   G       2000    4     2000
    10  G       3000    5     3000
    11  G       5000    6     5000
    12  G               6     5000
    

提交回复
热议问题