2011-09-11 56 views
0

我有一個表,如下產生該列中的數字:創建一個新的列,並使用TSQL

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

什麼rdbms /版本? –

+0

我正在使用sql server 2008 R2 – CPDS

回答

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

即使你確實有額外的列沒有顯示在問題中,這將意味着行不是完全重複,你仍然會留下一個非規範化的表,應該很可能被重新考慮到兩個。

+0

我收到無效的列名稱。 employee_no – CPDS

+0

您不能將該列添加到表中。但看到我的問題,你爲什麼這樣做。 –

+0

不,我需要重複和上述查詢刪除重複。 – CPDS

相關問題