SQL Server заменяет NULL на длину столбца - PullRequest
0 голосов
/ 31 октября 2019

Есть таблица

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

У меня естьГуглил но не понял как это сделать

1 Ответ

3 голосов
/ 31 октября 2019

Как прокомментировал 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...