2011-09-11 13 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の列が異なる場合は、固有の番号を割り当てる必要があります。これらの2つの列が同じ場合は、上記の表に示すものと同じ番号を割り当てます。私は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列を追加してください。

質問に表示されていない列がある場合でも、行が完全に重複していない場合でも、おそらく2つに再分解されるはずの正規化されていない表が残ります。

+0

無効な列名が取得されています。 employee_no – CPDS

+0

その列をまだテーブルに追加することはできません。しかし、なぜあなたはこれをやっているの私の質問を参照してください。 –

+0

いいえ重複が必要で、上記のクエリで重複が削除されます。 – CPDS

関連する問題