我在 SQL Server 中有一个原始数据表。我将创建规范化表,其中一些具有字符串值的列将替换为从查找表中获取的标识。
例如,原始表中的雇主名称列具有字符串数据类型。我需要用雇主查找表中的标识值(整数)替换它,但我需要添加可能的新雇主名称以首先从原始数据表中查找表。
我在 SQL Server 中有一个原始数据表。我将创建规范化表,其中一些具有字符串值的列将替换为从查找表中获取的标识。
例如,原始表中的雇主名称列具有字符串数据类型。我需要用雇主查找表中的标识值(整数)替换它,但我需要添加可能的新雇主名称以首先从原始数据表中查找表。
因此,如果您已经有一个带有字符串列的临时表,那么您需要对事物进行规范化。首先添加一个 FK(外键)列,填充它,然后删除旧的字符串列。像这样的东西:
--Your starting point
CREATE TABLE tmp(EmployerName varchar(100))
CREATE TABLE Employee([EmployerID] [int] IDENTITY(1,1) NOT NULL, [Employer Name] [nvarchar](max) NULL)
--Add a foreign key field to your tmp table
ALTER TABLE tmp add EmployerID int
--Update your new foreign key
UPDATE tmp set EmployerID=e.EmployerID
FROM
tmp
inner join Employee e on e.[Employer Name] = tmp.EmployerName
--Finally, remove your old denormalized string column
--and just use the EmployeeID field going forward.
ALTER TABLE tmp drop column EmployerName