0

我有一个包含两列的源表 - Sndr_Ref 和 Check_Num

我有一个包含一列的目标表 - Txn_Code (nvarchar(50),null)

这是我需要实现的逻辑 -

  1. 如果 Sndr_Ref = [某个值] 并且 Check_Num = null,则加载 Txn_Code = 10
  2. 如果 Check_Num = [某个值] 且 Sndr_Ref = null,则加载 Txn_Code = 2
  3. 如果 Sndr_Ref 和 Check_Num = [某个值],则加载 Txn_Code = 10
  4. 如果 Sndr_Ref 和 Check_Num = Null,则加载 Txn_Code = Null

我在映射到 Txn_Code 的 SSIS 包中创建了一个派生列。这是我的派生列的表达式-

Sndr_Ref == "" ? (Check_Num == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"

上面的表达式是在所有记录中插入 10。没有插入空值或 2。我检查了源表,目标列中应该有一些包含 10、2 和空值的记录。我刚刚发现我的源参考列(Sndr_Ref 和 Check_Num)有宽空间。您能否帮助我如何在上述逻辑中修剪这些宽空间并将值设置为 null 如果它们是空白的?

4

1 回答 1

0

不确定您的源数据,但我想您可能还需要检查空值:

ISNULL(Sndr_Ref) || TRIM(Sndr_Ref) == "" ? (ISNULL(Check_Num) || TRIM(Check_Num) == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"
于 2014-03-07T18:49:22.680 回答