在CASE语句中处理多个条件的派生列? [英] Derived Column to handled mulitple conditions in CASE statement?

查看:53
本文介绍了在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)

这篇关于在CASE语句中处理多个条件的派生列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆