派生列处理 CASE 语句中的多个条件?

Derived Column to handled mulitple conditions in CASE statement?

我有一个 CASE 语句可以工作,但是因为我必须在 SSIS 中做,所以我不知所措:

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 语句计算一列中的值并根据它们的内容重命名它们。 当我用 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 语句,因为它应该知道要分配的值,以防上述条件均不成立:

[TYPE] == 1 ? "Normal" : 
[TYPE] == 2 ? "Divers" : 
[TYPE] == 3 ? "Intra-Société" : 
[TYPE] == 4 ? "Prospect" : ""

相当于SQL中的以下内容:

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值而不是空字符串,可以使用如下表达式(假设派生列类型为DT_WSTR:

[TYPE] == 1 ? "Normal" : 
[TYPE] == 2 ? "Divers" : 
[TYPE] == 3 ? "Intra-Société" : 
[TYPE] == 4 ? "Prospect" : NULL(DT_WSTR,50)