我有一个员工表,其中包含同一个人的多个条目。 使用他们的SIN编号,您可以确定他们是否是同一个人。
示例:
Id Name SIN
1 John Smith 1234
2 John Smith 1234
3 Jess Jones 4321
我希望能够将此表中的所有人复制到新表中。 我想创建一个新列(UserKey [GUID]),该列对于表中多次使用的用户是唯一的。 我想使用这个新的UserKey [GUID]而不是SIN号。
Example:
Id Name UserKey (Guid)
1 John Smith 1234DFKJ2328LJFD
2 John Smith 1234DFKJ2328LJFD
3 Jess Jones 9543SLDFJ28EKJFF
我不知道如何处理此查询。任何帮助都会很棒。
我正在使用MS SQL Server 2008。
感谢。
答案 0 :(得分:3)
您可以创建临时表,将SIN映射到新的GUID。然后,您可以将原始表与映射表连接起来,并从中创建新表。
# Create a table called #temp with the mappings SID => new GUID
SELECT SIN, newid() UserKey INTO #temp FROM (SELECT DISTINCT SIN FROM Table1) a
# ...and join that and the original table to a new table.
SELECT id, name, userkey
INTO NewTable
FROM Table1 t1
JOIN #temp t2
ON t1.SIN = t2.SIN
SQLFiddle here。