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

Откуда: Київ
Сообщений: 10428
есть таблица, в ней юзер мог добавить вполе name2 одинаковые значения.
Я хоче построить уникальный индекс по этому полю, чтобы избежать такого.
Но если там уже есть добулированные значения индекс не строится.

Как сделать униакльными имена в скрипте? вот пример

if NOT(object_id('tempdb..#z') IS NULL) drop table #z
create table #z(id int identity, name1 nvarchar(128), name2  nvarchar(128))
insert into #z(name1, name2) 
select N'vasya',N'v1'
union
select N'vaska',N'v1'
union
select N'petya',N'p1'
union
select N'petruha',N'p2'
union
select N'pete',N'p1'

select count(*), name2 from #z
group by name2 having count(*)>1
1 июл 09, 12:57    [7363046]     Ответить | Цитировать Сообщить модератору
 Re: как сделать уникальными значения в поле?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
поиск по словам "удалить дубли"
1 июл 09, 13:00    [7363066]     Ответить | Цитировать Сообщить модератору
 Re: как сделать уникальными значения в поле?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
т.е. устроило бы автоматически

v1
v1_1
p2
p2_1

или что-то подобное.....
1 июл 09, 13:00    [7363068]     Ответить | Цитировать Сообщить модератору
 Re: как сделать уникальными значения в поле?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вопрос как написать инстукцию создания уникального индекса ? или как ?
-------------------------------------
Jedem Das Seine
1 июл 09, 13:01    [7363074]     Ответить | Цитировать Сообщить модератору
 Re: как сделать уникальными значения в поле?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
select name1
      ,case when row_number() over(partition by name2 order by name1) = 1
            then name2
            else name2 + '_' + cast(row_number() over(partition by name2 order by name1) as nvarchar(10))
        end as name2_2
  from #z

name1        name2_2
------------ -----------------------
pete         p1
petya        p1_2
petruha      p2
vaska        v1
vasya        v1_2

(5 row(s) affected)
1 июл 09, 13:04    [7363094]     Ответить | Цитировать Сообщить модератору
 Re: как сделать уникальными значения в поле?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Паганель
select name1
      ,case when row_number() over(partition by name2 order by name1) = 1
            then name2
            else name2 + '_' + cast(row_number() over(partition by name2 order by name1) as nvarchar(10))
        end as name2_2
  from #z

name1        name2_2
------------ -----------------------
pete         p1
petya        p1_2
petruha      p2
vaska        v1
vasya        v1_2

(5 row(s) affected)


оно!
спасибо!
1 июл 09, 13:46    [7363302]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить