0

派生列で where 句を使用したい

表 1 と表 2 があります。これらの両方を比較し、表 1 の [名前] 列を変更する必要があります。

2つの条件を満たす必要があります

 1) If I have name as UNK or UNKNOWN or NULL and HI_UN as 1 then it needs to be changed to UNKNOWN
 2) If I have name as UNK or UNKOWN or NULL or None and P_M has A or R then it needs to be changed to UNoccupy

これを SSIS の派生列ロジックに組み込む方法

表1

 NUM           VEH              NAME                     P_M          HI_UN
 017            1       UNK                               A             1
 037            2       DESORMEAUX, JR. MICHELLE          B             2
 043            3       UNK                               R             3
 073            4       UNKNOWN                           A             4

表 2

VEH           HI_UN
1               1
2               2
3               3
4               4

最終結果:

     NUM           VEH              NAME                     P_M          HI_UN
     017            1       UNKNOWN                           A             1
     037            2       DESORMEAUX, JR. MICHELLE          B             2
     043            3       UNoccupy                          R             3
     073            4       UNKNOWN                           A             4
4

2 に答える 2

1

テーブル 1 の名前を変更したいと言うと、実際には派生列が必要ではなく、更新ステートメントを含む SQL タスクだけが必要なように思えます。派生列を使用したい場合でも、より簡単な場合があります。式が扱いにくいため、SQL タスクを使用して入力します。

UPDATE a
SET a.Table1 = CASE WHEN (a.Name IN ('UNK','UNKNOWN') OR a.Name IS NULL) AND a.HI_UN = 1 THEN 'UNWNOWN'
                    WHEN (a.Name IN ('UNK','UNKNOWN','None') OR a.Name IS NULL) AND P_M IN ('A','R') THEN 'UNoccupy'
                    ELSE a.Name
               END
FROM Table1 a
JOIN Table2 b
    ON a.VEH = b.VEH
    AND a.HI_UN = b.HI_UN

注: サンプル データが完全ではなく、何らかの理由でJOIN.

派生列変換は、1 つの入力のみを使用できます。必要に応じてを追加して、Merge Joinそれを派生列にフィードすることもできますが、必要な式は次のように少し扱いに​​くくなります。

(Name == "UNK" || Name == "UNKNOWN" || ISNULL(Name)) && HI_UN == “1” ? "UNKNOWN" : ((Name == "UNK" || Name == "UNKNOWN" || ISNULL(Name)) && P_M == “A” || P_M == “A” ? "UNoccupy" : Name)
于 2013-09-19T21:14:52.193 に答える
0

SQL実行タスクを使用して、そのようなSQLマージ関数を使用できます。

http://technet.microsoft.com/en-us/library/bb510625.aspx

于 2013-09-19T22:03:46.190 に答える