Дать группе строк уникальный идентификатор TSQL

Быстрый вопрос, у меня есть таблица со столбцом, который является идентификатором для группы строк. Например, группа строк, записывающая транзакции клиентов, где каждая строка имеет ссылку на клиентов.

То, что я пытаюсь достичь, - дать этой группе строк новый уникальный идентификатор, чтобы я мог анонимно сообщить об этом.

Что я пробовал

 UPDATE dbo.[t_Health]
   set Code = 'ABC' + Cast(RAND() as varchar(50))
     where si.CustRef= si.CustRef

Большое спасибо!

0
nl ja de
ftr - Сообщение о обновлении, которое вы представили, невозможно запустить. Алиас si нигде не объявлен.
добавлено автор Lieven Keersmaekers, источник
Хотя это сработает, оно также полностью избыточно :). Вы можете оставить все предложение where.
добавлено автор Lieven Keersmaekers, источник
Да, жаль, что это должно было быть. где [t_Health] .CustRef = [t_Health] .CustRef
добавлено автор DaveB, источник

2 ответы

Вы можете использовать любой из Хеширование функции availabe.

<Сильный> Пример

UPDATE dbo.[t_Health]
SET Code = hashbytes('SH2_512', CAST(CustRef AS VARCHAR(16))  
3
добавлено
@DaveB - Обратите внимание, что теоретически, есть вероятность столкновения, но практически, скорее всего, солнце взорвется, прежде чем вы его получите.
добавлено автор Lieven Keersmaekers, источник
Большое спасибо!
добавлено автор DaveB, источник
Я всего лишь 20 000 строк, поэтому считаю, что я в безопасности!
добавлено автор DaveB, источник

Чтобы создать новый уникальный идентификатор, используйте функцию NEWID()

with    anonymousId as (
        select  distinct CustRef,
                newid() as newId
        from    t_health)
update  dbo.t_health
set     code = ai.newId
from    dbo.t_health h join anonymousId ai on h.custref = ai.custref
2
добавлено
Я хочу уникально идентифицировать группу строк с тем же идентификатором. Не дать каждой строке уникальный номер
добавлено автор DaveB, источник
Большое спасибо за вашу помощь
добавлено автор DaveB, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)