gpt4 book ai didi

sql - 如何在循环中使用滞后函数更新表?

转载 作者:行者123 更新时间:2023-12-04 10:55:14 25 4
gpt4 key购买 nike

我已经花了几个小时试图弄清楚这一点,但我不能,所以我现在求助于专家。
这是我的表的样子:

RowNumber    SeriesNumber
1 1
2 0
3 0
4 0
1 2
2 0
1 3
2 0
1 4

这就是我想要的样子:
RowNumber    SeriesNumber
1 1
2 1
3 1
4 1
1 2
2 2
1 3
2 3
1 4

我基本上希望所有的零(一个一个,所以我猜是在循环中?)取它们正上方的行的值。真的有那么难还是我不够聪明?

谢谢!

最佳答案

如果您有 rowNumberTotal列作为整体排序,那么这很容易。这是使用窗口函数的机制:

with toupdate as (
select t.*,
max(seriesnumber) over (partition by prev_rownumbertotal) as imputed_seriesnumber
from (select t.*,
max(case when seriesnumber > 0 then rownumbertotal end) over (order by rownumbertotal) as prev_rownumbertotal
from t
) t
)
update toupdate
set seriesnumber = imputed_seriesnumber
where seriesnumber = 0;

关于sql - 如何在循环中使用滞后函数更新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com