Создайте новый столбец и сгенерируйте числа в этом столбце, используя TSQL - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть таблица, как показано ниже:

employee_name employee_address
RON           23-B, TORONTO
PETER         15-C, NY
TED           23-C, LONDON
RON           23-B, TORONTO

Я должен добавить новый столбец в эту таблицу следующим образом:

employee_name employee_address   employee_no
RON           23-B, TORONTO      1
PETER         15-C, NY           2
TED           23-C, LONDON       3
RON           23-B, TORONTO      1

Обычно я должен назначать уникальные номера, если столбцы employee_name и employee_address отличаются. Если эти два столбца совпадают, присвойте тот же номер, как показано в таблице выше. Я должен сделать это с помощью TSQL. Может кто-нибудь помочь, пожалуйста?

Спасибо.

1 Ответ

0 голосов
/ 12 сентября 2011

Чтобы ответить на заданный вопрос

/*To add the new column*/
ALTER TABLE emps ADD employee_no INT NULL

/*To populate it*/
;WITH T
     AS (SELECT employee_no,
                dense_rank() OVER (ORDER BY employee_name, employee_address) AS
                new_employee_no
         FROM   emps)
UPDATE T
SET    employee_no = new_employee_no   

Но каков вариант использования для этого? Если у вас есть только эти 3 столбца, просто удалите дубликаты и добавьте столбец identity.

Даже если у вас есть дополнительные столбцы, не показанные в вопросе, которые означают, что строки не являются точными дубликатами, вы все равно останетесь с денормализованной таблицей, которая, вероятно, должна быть разложена на две части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...