多个查找的SSIS派生列

时间:2013-09-19 20:19:52

标签: mysql sql sql-server ssis

我想在派生列中使用where子句,即

我有表1,表2我必须比较这两者并更改表1中的Name列。

要满足两个条件

 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

2 个答案:

答案 0 :(得分:1)

当你说要更改表1中的名称时,听起来你实际上并不需要派生列而只需要带有update语句的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的原因。

派生列转换只能使用一个输入。如果需要,您可以添加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)

答案 1 :(得分:0)

您可以使用sql execute任务并使用类似的SQL合并函数;

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