如何在SSIS表达式中编写Case语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SSIS表达式中编写Case语句相关的知识,希望对你有一定的参考价值。

我在SQL Code中的条件很小。如何在Derived列任务中的SSIS中编写它。

CASE WHEN SaleProduct IS NULL AND ReProduct IS NULL THEN '' 
     WHEN SaleProduct IS NOT NULL AND ReProduct IS NULL THEN SaleProduct
     WHEN SaleProduct IS  NULL AND ReProduct IS NOT NULL THEN SaleProduct

ELSE 

SaleProduct +';'+ ReProduct  END As COL

我尝试过以下表达但没有得到任何东西

(ISNULL( [SaleProduct]  )&& [ReProduct] == "") : ? "0" 
" ------------------------"
UNKNOWN

谁可以帮我这个事 ...

答案

可以使用“派生”列转换中的“条件”运算符复制CASE语句。对于你的情况,表达式就像

((ISNULL(SaleProduct) == True && ISNULL(ReProduct) == True) ? " " :((ISNULL(SaleProduct) == False && ISNULL(ReProduct) == True)? SaleProduct :(ISNULL(SaleProduct) == True && ISNULL(ReProduct) == False)? SaleProduct : SaleProduct+";"+ReProduct)
另一答案

你需要在Ternary operator转换中使用Derived column

了解和描述您的情况:

  ( ISNULL([SaleProduct]) && ISNULL([ReProduct]) ) ? " " :
       ( !ISNULL([SaleProduct]) && ISNULL([ReProduct]) ) ? [SaleProduct] :
                       ( ISNULL([SaleProduct]) && !ISNULL([ReProduct]) ) ? [SaleProduct] : ( [SaleProduct]+";"+[ReProduct] )

但是标签会导致Derived column转换错误。因此它实际应该是:

(ISNULL([SaleProduct]) && ISNULL([ReProduct])) ? " " : (!ISNULL([SaleProduct]) && ISNULL([ReProduct])) ? [SaleProduct] : (ISNULL([SaleProduct]) && !ISNULL([ReProduct])) ? [SaleProduct] : ([SaleProduct]+";"+[ReProduct]) 

以上是关于如何在SSIS表达式中编写Case语句的主要内容,如果未能解决你的问题,请参考以下文章

用Java中的Switch语句编写出成绩的等级划分!

如何使用 SQL 中的 Case 语句将数据插入临时表

是否可以将数据编写为 SSIS 包中的 Insert 语句?

Verilog的If语句和Case语句

一些语句(switch case...)

如何在使用jpa条件查询的case语句中使用concat函数