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 に答える