2013-12-16 39 views
1

我有以下SQL代碼SSIS表達

update ETL.TempRH set resourcer =IF(qualification IN (47,49,50,164,187,252,185,239,251) , "resourcer" ,type_Staff); 

,我需要將其轉換爲SSIS表達式。我試過這個,但沒有奏效。

(qualification = 47||qualification = 49|| qualification =50||qualification =164||qualification =187||qualification =252||qualification =185||qualification =239||qualification =251 ?"resourcer" :type_Staff) 

回答

3

您有一個問題是SSIS中的等式比較運算符是==而不是=

更一般地說,這些資格數字是否會改變?他們是否隱約有活力?

您可能只想使用Lookup組件來存儲資源管理器資格值,根據資源管理器資源值查找資格值,如果匹配,則用「resourcer」替換您的type_Staff列。

因此,例如,在您的查找設置查詢爲

SELECT 47 as Qualification, 1 as IsResourcer 
union 
SELECT 49, 1 
etc 
etc 

加入的資格,然後在你的派生列簡單地做

(IsResourcer == 1 ? "Resourcer" : Type_Staff) 

如果你不關心你保留原type_Staff值,則可以將查詢查詢更改爲

SELECT 47 as Qualification, 'Resourcer' as type_Staff 
    union 
    SELECT 49, 'Resourcer' 
    etc 
    etc 

並設置type_Staff如果要替換現有的type_Staff列。

0

在SSIS表達只要使用以下嵌套查詢邏輯:

Field == "TrueCondition1" ? 「True」 : (Field == "TrueCondition2" ? 「True」 : (Field == "TrueCondition3 " ? 「True」 : (Field == "TrueCondition4" ? 「True」 : 「False" ))) 

所以按照您的查詢字段==資格&什麼值要檢查的資格將成爲「TrueCondition」

@[User::qualification] == 47 ? @[User::resourcer] : (@[User::qualification] == 49 ? @[User::resourcer] : (@[User::qualification] == 40 ? @[User::resourcer] : @[User::type_staff])) 

試試這個。