使用TSQL创建新列并在该列中生成数字

时间:2011-09-11 21:46:28

标签: sql sql-server sql-server-2008-r2

我有一张表格如下:

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 :(得分:0)

回答问题

/*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列。

即使您确实在问题中没有显示其他列,这些列意味着这些行不是完全重复的,您仍然会留下一个非常规化的表,该表应该很可能被重新计算为两个。