Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ункальное значение в таблице  [new]
intruders
Member

Откуда:
Сообщений: 140
День добрый, помогите с написанием скрипта. К примеру, имеется таблица в которую загоняются данные. В ней присутствует поле номер, каким образом можно проапдейтить это поле что бы каждый номер был уникальный(к повторяющимся значениям добавлять +1)

select [TEXT]  from #bank where SUBSTRING(bank,0,PATINDEX('%=%',bank))='Номер'	


181
181
182
183
204
26 июн 15, 13:03    [17819851]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
intruders
(к повторяющимся значениям добавлять +1)

Т.е. ко второму 181 прибавить +1 ? Чтобы получить 182 ?
Потом ко второму 182 прибавить +1 ? Чтобы получить 183 ?
...
26 июн 15, 13:05    [17819864]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
SELECT [TEXT]+CAST(ROW_NUMBER()OVER(PARTITION BY [TEXT] ORDER BY (SELECT 0))AS VARCHAR)
FROM #bank
WHERE bank LIKE 'Номер%';
???
26 июн 15, 13:07    [17819878]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
intruders
Member

Откуда:
Сообщений: 140
апдейтить только те записи которые повторяются
26 июн 15, 13:07    [17819879]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
intruders
Member

Откуда:
Сообщений: 140
так он все изменяет
iap
SELECT [TEXT]+CAST(ROW_NUMBER()OVER(PARTITION BY [TEXT] ORDER BY (SELECT 0))AS VARCHAR)
FROM #bank
WHERE bank LIKE 'Номер%';
???
26 июн 15, 13:08    [17819888]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
intruders
апдейтить только те записи которые повторяются

И как узнать, что после апдейта не появилось других повторов ?
26 июн 15, 13:08    [17819889]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
iap
SELECT [TEXT]+CAST(ROW_NUMBER()OVER(PARTITION BY [TEXT] ORDER BY (SELECT 0))AS VARCHAR)
FROM #bank
WHERE bank LIKE 'Номер%';

???
SELECT [TEXT]+ISNULL(CAST(NULLIF(ROW_NUMBER()OVER(PARTITION BY [TEXT] ORDER BY (SELECT 0))-1,0) AS VARCHAR),'')
FROM #bank
WHERE bank LIKE 'Номер%';
26 июн 15, 13:12    [17819896]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
intruders
так он все изменяет
iap
SELECT [TEXT]+CAST(ROW_NUMBER()OVER(PARTITION BY [TEXT] ORDER BY (SELECT 0))AS VARCHAR)
FROM #bank
WHERE bank LIKE 'Номер%';

???
SELECT не может ничего изменить
26 июн 15, 13:12    [17819899]     Ответить | Цитировать Сообщить модератору
 Re: Ункальное значение в таблице  [new]
sergeimv
Member

Откуда: Россия, г.Казань
Сообщений: 42
if object_id('tempdb..#t') is not null drop table #t
create table #t(id int)

insert into #t (id)
values(181),(181),(182),(183),(204)

create index ix_#t on #t(id) -- Если отсутствует кластерный индекс или кластерный индекс не начинается с этого поля, то создадим индекс по этому полю
declare @id int = 0;
update t 
set
	@id = iif(@id != id, t.id, @id + 1),
	t.id = @id
from
	#t t
with(index(ix_#t)) -- Используем индекс, что бы апдейт шел в нужной последовательности

select * from #t
26 июн 15, 13:27    [17819976]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить