0

我有一个临时表,看起来像

临时表:

          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
4

1 回答 1

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>[,...]

如果性能不好,请考虑在临时表上创建索引以提供帮助。

于 2012-09-26T17:19:09.040 回答