我想在派生列中使用 where 子句,即
我有表 1、表 2,我必须比较这两个表并更改表 1 中的“名称”列。
需要满足两个条件
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
最佳答案
当你说你想更改表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
。
派生列转换只能使用一个输入。如果需要,您可以添加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)
关于mysql - 用于多个查找的 SSIS 派生列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18904171/