派生列查找并替换SSIS

时间:2014-02-10 16:01:21

标签: sql sql-server-2008 ssis

我在表中有一个列(比如A),其中有空值,我有另一个列(比如说B)依赖于这个列,它们都是相互关联的,现在我的问题是 如果A中的某行有NULL而B是NOT NULL,则A应该被B替换,如果B也是NULL,那么它应该赋值{{ 1}}。

UNKNOWN

输出应该像

Table 1:

A    B    C D
NULL 1    2 3
NULL NULL 3 4
1    NULL 4 5

3 个答案:

答案 0 :(得分:0)

编辑:问题在于SSIS的实施,但我将把它留在这里为未来的灵魂。

这个怎么样?

编辑:你想交换A和B吗?如果是这样,只需使用与此类似的CASE

CASE [Table 1].A
    WHEN [Table 1].A IS NULL AND [Table 2].B IS NOT NULL
        THEN [Table 1].A
    WHEN [Table 1].A IS NULL AND [Table 2].B IS NULL
        THEN 'UNKNOWN'
    ELSE [Table 1].A
END

答案 1 :(得分:0)

在派生的列控件中,根据您选择的列添加以下表达式(或添加新列)

A栏:

((LEN([A]) == 0 || ISNULL([A])) && (LEN([B]) != 0 || !ISNULL([B]))) ? [A] : [B]

B栏:

((LEN([B]) == 0 || ISNULL([B])) && (LEN([A]) != 0 || !ISNULL([A]))) ? [B] : [A]

然后你可以使用相同的表现来调整你的UNKNOW案例。

((LEN([Column 0]) == 0 || ISNULL([Column 0])) && (LEN([Column 1]) == 0 || ISNULL([Column 1]))) ? "HELLO" : "UNKNOW"

如果它适合你,请让我更新:)

最诚挚的问候, ANDOURA

答案 2 :(得分:0)

对于A列,请使用此表达式。

ISNULL(A) && ISNULL(B)? "UNKNOWN" : ISNULL(A) && !ISNULL(B)? "B" : "NULL"