2

2つのテーブルがあります。

テクノロジールックアップテーブル

OSID  OSValue  

1     UNIX             
2     ORACLE            
3     .NET 
4     SQL    
5     SAP  

------------------

従業員のテクノロジー

empID   OSID

34      1
37      2
45      2
34      4
45      6

従業員IDNO37はもはやORACLEを使用していません。彼はSAPに移行しました。つまり、OSIDは2番目のテーブルで2から5に更新される必要があります。

テクノロジーと従業員IDの値を含む一時テーブルがあります

上記の両方のテーブルを結合するクエリを作成するのを手伝ってください-SAPテクノロジーのIDを検索し、そのIDで2番目のテーブルを更新します。

Update emp
Set emp.OSID = (Select OSID from technologylookup where OSValue = tmptbl.technologyname)
FROM employee_tech emp INNER JOIN #Temptbl tmptbl ON emp.emp_id = tmptbl.emp_id
4

3 に答える 3

3

ルックアップテーブルを一時テーブルに結合してから、employee_techテーブルをそのテーブルのIDで更新します

Update emp
   Set emp.OSID = tl.OSID
FROM employee_tech emp 
INNER JOIN #Temptbl tmptbl 
   ON emp.emp_id = tmptbl.emp_id
INNER JOIN technologylookup tl
   ON tl.OSValue COLLATE DATABASE_DEFAULT = tmptbl.technologyname
于 2012-09-24T20:22:41.653 に答える
0

私の頭から、テストされていません:

update employee_tech
set osid = t.osid
from #Temptbl tmp
inner join employee_tech e on e.emp_id = tmp.emp_id
inner join technologylookup t on t.osvalue = tmp.technologyname
于 2012-09-24T20:23:14.667 に答える
0

一時テーブルの「テクノロジー」がIDと等しい場合は、次のように更新できます。

UPDATE employee_tech
SET OSID = (SELECT technology FROM #Temptbl AS T INNER JOIN employee_tech AS E ON T.empID = E.empID)
于 2012-09-24T20:23:24.733 に答える