如何使LAG()在SQL Server中忽略NULL?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使LAG()在SQL Server中忽略NULL?相关的知识,希望对你有一定的参考价值。

有人知道如何用字符串替换列中的空值,直到命中新的字符串,然后该字符串替换其下的所有空值?我有一栏看起来像这样]

原始列:

PAST_DUE_COL           
91 or more days pastdue        
Null
Null
61-90 days past due          
Null
Null
31-60 days past due
Null
0-30 days past due
Null       
Null
Null            

预期结果列:

PAST_DUE_COL           
91 or more days past due        
91 or more days past due
91 or more days past due
61-90 days past due          
61-90 days past due 
61-90 days past due 
31-60 days past due
31-60 days past due
0-30 days past due
0-30 days past due      
0-30 days past due
0-30 days past due

基本上,我希望列中的第一个字符串替换它下面的所有空值,直到下一个字符串。然后,该字符串将替换其下的所有null,直到下一个字符串,依此类推。

有人知道如何用字符串替换列中的空值,直到命中新的字符串,然后该字符串替换其下的所有空值?我有一列看起来像这样的原始列:...

答案

SQL Server不支持ignore nullslead()之类的窗口函数的lag()选项,对此问题很合适。

另一答案

这是GMB回答的一种变体。只是简单一点:

另一答案

如果您有一个ID列,但前导/滞后不可用,则可以使用:

以上是关于如何使LAG()在SQL Server中忽略NULL?的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中使用上一行和下一行值 (LAG & LEAD) 计算总结束数量

sqlite - 忽略 lag/lad 中的空值

SQL SERVER LEAD和LAG使用

SQL Server 2012 - 使用 LAG 从以前的行中获取数据

在sqlserver 2008 怎么配置才可以正常支持lead和lag分析函数

在 SQL Server Always ON 配置中 - 将事务日志备份到 Nul 会中断 Always On 配置吗?