我有一个看起来像
的临时表TmpTable:
ID(not unique) Platform Name OS version
13 UNIX Ipad 5.1
13 Windows Windows 2008
14 MAC Ipad 4.1
Look_UP Tbl:对于上面的每一列
PlatformName LookuP Tbl: platform id desc
2 Unix
5 windows
OS Lookup : OS id OSname
4 Ipad
Version Lookup : Version id name
5 5.1
然后拥有EmpPlatformID,EmpOSID& EmpVersionID如下;
EmpPlatform - EmpId PltformNameID
13 1
13 6
same for OS & ID
我需要一个查询 1)使用查找表为每个员工ID获取每列(PlatformName,OS,Version)的相应ID。 2)在每个实际表中插入该empid的ID。
因此,empPlatformTable应该看起来像;
EmpPlatform - EmpId PltformNameID
13 1
13 6
13 2 - new row added from tmptbl
13 5 - new row added from tmptbl
The EmpOS & EmpVer also has similar column so the emp id should have corresponding IDs inserted from temptbl . please helps
编辑: 用于更新PlatformName的代码
Update EmpPN
Set EmpN.platform_id = PLookup.platform_id
from #TempTable tmpd (READUNCOMMITTED)
inner join EmpPlatform EmpPN (READUNCOMMITTED)
on EmpPN.emp_id = emp_id collate database_default
inner join PlatformLookUpTbl PLookup(READUNCOMMITTED)
on PLookup.[platform_name] = tmpd.PlatformName collate database_default
答案 0 :(得分:0)
为什么不
Update EmpPN
Set
Platform_ID =
(
Select Top 1 L.Platform_ID From PlatformLookupTbl As L
Inner Join #TempTable As T On L.PlatForm_Name = T.PlatFormName
Where T.Emp_ID = EmpPN.Emp_ID
),
<next field> =
<analogous lookup statement>[,...]
如果性能不好,请考虑在临时表上创建索引以提供帮助。