本文介紹了在CASE語句中處理多個條件的派生列?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個CASE
語句可以用,但因為我必須在SSIS中執(zhí)行,所以我感到困惑:
SELECT [BPCNUM_0], TYPE,
CASE
WHEN [TYPE]=1 THEN 'Normal'
WHEN [TYPE]=2 THEN 'Divers'
WHEN [TYPE]=3 THEN 'Intra-Société'
WHEN [TYPE]=4 THEN 'Prospect'
END AS TYPE
FROM table
如您所見,Case語句計算一列中的值,并根據(jù)它們是什么重命名它們。
當我在SSIS上嘗試此功能時,它不起作用
[TYPE] == 1 ? "Normal" : [TYPE] == 2 ? "Divers" : [TYPE] == 3 ? "Intra-Société" : [TYPE] == 4 ? "Prospect"
我也試過
[TYPE] == "1" ? "Normal" : [TYPE] == "2" ? "Divers" : [TYPE] == "3" ? "Intra-Société" : [TYPE] == "4" ? "Prospect"
但它也沒有起作用。
推薦答案
您的表達式需要添加最后一個Else語句,因為它應(yīng)該知道在驗證上述條件時要賦值的值:
[TYPE] == 1 ? "Normal" :
[TYPE] == 2 ? "Divers" :
[TYPE] == 3 ? "Intra-Société" :
[TYPE] == 4 ? "Prospect" : ""
相當于SQL中的以下內(nèi)容:
SELECT [BPCNUM_0], TYPE,
CASE
WHEN [TYPE]=1 THEN 'Normal'
WHEN [TYPE]=2 THEN 'Divers'
WHEN [TYPE]=3 THEN 'Intra-Société'
WHEN [TYPE]=4 THEN 'Prospect'
ELSE ''
END AS TYPE
FROM table
如果您需要賦值NULL
而不是空字符串,可以使用以下表達式(假設(shè)派生的列類型為DT_WSTR
):
[TYPE] == 1 ? "Normal" :
[TYPE] == 2 ? "Divers" :
[TYPE] == 3 ? "Intra-Société" :
[TYPE] == 4 ? "Prospect" : NULL(DT_WSTR,50)
這篇關(guān)于在CASE語句中處理多個條件的派生列?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,