Вам нужен столбец заказа для ваших данных.Позвольте мне предположить, что у вас есть один.
Сначала добавьте новый столбец:
alter table t add column id int;
Примечание: id
- это действительно плохое имя для столбца, который можетбыть null
.Тогда:
with toupdate as (
select t.*,
row_number() over (partition by col1 order by <ordering col>) as seqnum
from t
)
update toupdate
set id = (case when col1 = 1 then seqnum end);
Строго говоря, вам не нужно обновлять значения при col1 = 0
, потому что по умолчанию установлено значение NULL
.Однако, если вам нужно другое значение, я пропускаю where col1 = 1
.