假设我有一个表,如下所示:
Row Volume
1 10000
2 8000
3 0.01
4 0
5 5000
6 0
现在,如果我在SQL Server中使用LAG()
函数,我相信下表将会出现:
Row Volume LAG(Volume)
1 10000 NULL
2 8000 10000
3 0.01 8000
4 0 0.01
5 5000 0
6 0 5000
然而,这并不完全是我正在寻找的,所以请允许我提供一些背景知识,说明我为什么需要LAG(Volume)
专栏.其原因是因为较小的值,如我的示例中的0.01
或0
,很可能是数据处理错误,所以我想用最后一个非0.01
或非0
的值覆盖它们,然后用JOIN
来更新表.我相信这需要我首先提出LAG(Volume)
列,但我需要LAG()
函数来忽略一些值.在我的示例中,它们将是0.01
和0
.我想,也可以说,我希望滞后值取决于滞后值实际是什么.换句话说,对于我的示例,我希望生成以下表格:
Row Volume LAG(Volume)
1 10000 NULL
2 8000 10000
3 0.01 8000
4 0 8000
5 5000 8000
6 0 5000
请注意,对于第6行,滞后应该是5000(而不是8000),因为虽然它的音量是0,但它的滞后既不是0也不是0.01.
这是可以做到的吗?
如果任何人有其他方法可以将这些值更新为最后一个非0.01
或非0
的值,而不必创建中间滞后列,也请让我知道.
如有建议,我们将不胜感激!