【发布时间】:2012-09-18 08:50:41
【问题描述】:
我有一个临时表,看起来像
临时表:
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 获取每列的对应 ID (PlatformName,OS,Version)。 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
【问题讨论】:
-
您能否发布您目前拥有的代码,让我们知道您在哪里遇到问题?
-
我强烈建议您在考虑解决此类问题时不要再考虑“循环”这个词。没有什么可以通过使用循环以任何方式优化的。
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2000