1

これら 2 つのステートメントを SQL サーバーで 1 つに結合する方法を探しています。「条件付き結合」を検索してみましたが、この正確な例が表示されませんでした。助けてくれてありがとう。

update
    employees
set
    employees.RefID = ed.RefID
from
    #tmpEmployees employees 
    inner join EmployeeDirectory ed on ed.ABC = employees.ABC
where
    ( nullif(ed.ABC, '') is not null and  nullif(employees.ABC, '') is not null)



update
    employees
set
    employees.RefID = ed.RefID
from
    #tmpEmployees employees 
    inner join EmployeeDirectory ed on ed.DEF = employees.DEF
where
    ( nullif(ed.DEF, '') is not null and  nullif(employees.DEF, '') is not null)
4

2 に答える 2

0

試す

UPDATE e
   SET e.RefID = d.RefID
  FROM #tmpEmployees e JOIN EmployeeDirectory d 
    ON e.ABC = d.ABC OR e.DEF = d.DEF
 WHERE NULLIF(e.ABC, '') IS NOT NULL 
   AND NULLIF(d.ABC, '') IS NOT NULL
   AND NULLIF(d.DEF, '') IS NOT NULL
   AND NULLIF(e.DEF, '') IS NOT NULL

また

UPDATE e
   SET e.RefID = COALEASCE(d1.RefID, d2.RefID)
  FROM #tmpEmployees e LEFT JOIN EmployeeDirectory d1 
    ON e.ABC = d1.ABC LEFT JOIN EmployeeDirectory d2 
    ON e.DEF = d2.DEF
于 2013-08-14T14:56:51.887 に答える
0

あなたが達成しようとしていることを完全に理解しているかどうかはわかりませんが、おそらく次のことが役立つでしょう。

UPDATE
    employees
SET
    employees.RefID = ed.RefID
FROM
    #tmpEmployees employees 
JOIN EmployeeDirectory ed 
  ON ed.ABC = employees.ABC OR
     ed.ABC IS NULL AND employees.ABC IS NULL OR
     ed.DEF = employees.DEF OR
     ed.DEF IS NULL AND employees.DEF IS NULL

値のNULL処理が必要なものではない (または必要なものとは逆の) 場合は、それを変更/反転できます。

于 2013-08-14T14:53:13.670 に答える