有一张桌子
foo bar id
foo1 bar1 NULL
foo2 bar2 NULL
foo2 bar2 NULL
foo3 bar3 NULL
foo4 bar4 NULL
foo4 bar4 NULL
我需要将NULL值替换为1,2,3等列的长度
foo bar id
foo1 bar1 1
foo2 bar2 2
foo2 bar2 3
foo3 bar3 4
foo4 bar4 5
foo4 bar4 6
我已经用Google进行搜索,但没有获得如何实现
答案 0 :(得分:3)
正如jarlh所评论的那样,您似乎正在尝试为id
列依次分配foo
,然后是bar
的递增编号:
select
foo,
bar,
case when id is null then row_number() over(order by foo, bar) else id end id
from mytable
如果您正在寻找更新:
with cte as (
select
foo,
bar,
id,
row_number() over(order by foo, bar) rn
from mytable
)
update cte set id = rn
where id is null