0

私はいくつかの似たような質問を見てきましたが、私のものとまったく同じものはありません。T-SQLの神は、これがフラッシュであると答えることができるはずです。

HRMSシステムフィードからの従業員と部門コードのソーステーブル(フィーダー)。SQLServerデータベースにemployeesテーブルとdepartmentsテーブルがあります。最初にフィーダーテーブルの部門コードの個別のリストを取得し、次にそれらのコードをチェックして部門テーブルに存在するかどうかを確認するストアドプロシージャが必要です。そうでない場合は、フィーダーテーブルから部門テーブルに挿入します。次に、employeeテーブルに挿入します。

現在、ビジネスアナリストの1人が、Excelで部門の個別のリストを取得し、それらを手動で追加していることがわかりました。データがすでにHRMSからフィーダーテーブルに入っているときは、おかしなことに思えます。挿入はできますが、フィーダーテーブルをループして、各行の部門コードがすでに部門テーブルに存在するかどうかを確認する方法がわかりません。助けてくれてありがとう。

J。

4

2 に答える 2

1

SQL2008以降ではmergeキーワードを使用できます。このスニペットをテストしました:

merge department as d
using feeder as f on f.code = d.code
  when not matched then
    insert (code)
      values (f.code);
于 2013-03-16T14:09:36.450 に答える
0

マージが機能します。ただし、挿入を行っているだけなので、これも次のようになります。

INSERT 
    department
    ( 
       departmentCode
    )
SELECT departmentcode 
FROM 
    ( 
        SELECT 
            departmentcode 
        FROM 
            feeder
        EXCEPT 
        SELECT 
            departmentcode
        FROM 
            department
    ) c;

両方のテーブルの departmentcode にインデックスがある場合、通常、このパターンは適切に機能します。

于 2013-03-19T15:42:14.743 に答える