我需要在我的SQL查询代码中获得支持。我必须用下一行的非空值替换列中的空值。
我们可以使用以下代码作为示例:
declare @value table (r# int, value varchar(15))
insert into @value ( r#, value ) values
(1, NULL ) ,
(2, 'January'),
(3, 'February' ),
(4, NULL ),
(5, 'March' ),
(6, NULL ),
(7, Null ),
(8, 'December' ),
(9, Null ),
(10, Null ),
(11, Null ),
(12, 'November' ),
(13, Null )
select * from @value
当我使用LEAD函数时,我得到了这个值,但是它不能处理NULL值。 我需要的是:
1 January
2 January
3 February
4 March
5 March
6 December
7 December
8 December
9 November
10 November
11 November
12 November
13 NULL
SELECT r#,
value
,case when value is null then Lead(value) OVER ( order by r# asc) else value end as RESULT
FROM @value
order by r#
我有:
LEAD
获取了下一个值。这个值可能为空(在你的数据中,对于只有一个空值的一月份可以工作,但是对于需要获取下下行的十二月份则不行)。LEAD
没有能力“获取满足条件的下一行”——为此,你需要某种形式的连接或内部查询(答案中有几个选项)。 - Richard