Создайте уникальный идентификатор для таблицы и примените его к данным с дубликатами - PullRequest
1 голос
/ 09 мая 2020

Я импортирую лист Excel на SQL Сервер. В нем есть данные о продажах с именами клиентов, нет уникального идентификатора клиента в Excel. Мне нужно создать идентификатор клиента и назначить его всем строкам. Конечно, для некоторых клиентов есть несколько строк, поэтому они должны получить правильный идентификатор (уже сгенерированный).

Я выполняю эту работу в SSIS, есть ли узел, который может создать уникальный идентификатор при необходимости или применить уже созданный идентификатор, когда тот же клиент обрабатывается?

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

1 Ответ

2 голосов
/ 09 мая 2020

В SQL в одном варианте используется dense_rank(). Следующее выражение дает вам уникальный, увеличивающийся идентификатор для каждого клиента:

dense_rank() over(order by client_name) as client_id

Если вам нужен оператор T SQL update, который устанавливает столбец client_id:

with cte as (
    select client_id, dense_rank() over(order by client_name) as new_client_id
    from mytable
)
update cte set client_id = new_client_id
...