У меня есть таблица в SQL Server, где у меня есть уникальный SiteNumber для каждого уникального location_id. То, что я пытаюсь сделать, это увеличить каждый номер ситема на 1, если location_id отличается.
Например:
SITENUM LOCATION_ID
1234 8801
4567 8802
8910 8803
... и т. Д.
Допустим, теперь я вставил новые значения для LOCATION_ID, но мой SITENUM остается NULL
NULL 7000
NULL 7001
NULL 7002
1234 8801
4567 8802
и т.д.
Моя логика гласит, что ситенум для 7000 должен быть MAX(select * sitenum from table)
но следующая ситена для 7001 должна быть Max(select * sitenum from table)+1
Прямо сейчас следующий код обновляет все ситены сразу до ТОЧНОГО одинакового значения
UPDATE dbo.[Monthly Hierarchy Table]
SET SITENUM = MAX(SELECT SITENUM FROM [Monthly Hierarchy Table])+1
WHERE SITENUM IS NULL and location_id is not null
Но я действительно хочу, чтобы это происходило, переходя строка за строкой, просматривая max(sitenum)
и увеличивая его на основе недублированных идентификаторов location_id. Должен быть какой-то способ, которым я могу сравнивать каждый location_id с самим собой и увеличивать номер места, где бы он ни был нулевым, а location_id отличается
Как мне это сделать? Может быть, то, как я понимаю, это не правильно, но это довольно простая проблема.