在CASE语句中处理多个条件的派生列?
我有一个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)
相关文章