我有一张表格如下:
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来做到这一点。有人可以帮忙吗?
感谢。
答案 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
列。
即使您确实在问题中没有显示其他列,这些列意味着这些行不是完全重复的,您仍然会留下一个非常规化的表,该表应该很可能被重新计算为两个。