0

您好,我是 informatica 的新手,正在尝试编写解码器,或者如果只有一个值进入输出端口......一个不相等的值进入输出端口......我是肯定的不相等......所以我的解码不起作用,我试图做一个嵌套的 if 不起作用......解码如下...... decode (true testopen = testdoor1, 'open', 'close', testopen = testdoor2,“打开”,“关闭”,testopen = testdoor3,“打开”,“关闭”)

虽然我知道 testdoor3 是唯一一个等于 testopen .. 填充了 testdoor3 .. 我在 testdoor2 上进行了一次测试(解码中只有一个表达式,它仍然用 testopen2 填充 testopen),但 testdoor2 和 testdoor1 有空值

然后我尝试了一个 iif 但在第一次之后就卡住了

 iif (testopen = testdoor1, 'equal','noequal')

但我无法弄清楚如何使用 3 个 iif 语句来做到这一点。感谢您的帮助。

decode (true
        testopen = testdoor1, 'open', 'close',
        testopen = testdoor2, 'open', 'close',
        testopen  = testdoor3, 'open', 'close')

或 iif (testopen = testdoor1, 'equal','noequal') 感谢您的帮助!

4

2 回答 2

1

这是来自 Informatica 文档的 DECODE 语法

DECODE( value, first_search, first_result [, second_search, second_result]...[,default] )

我建议您添加输入值和预期输出。

通过查看您的代码,您似乎没有为预期的位置/参数提供正确的输入。假设端口具有以下值

  1. testopen='是'

  2. testdoor1='是的'

  3. testdoor2='否'

  4. testdoor3='是的'

让我们看看用端口中的实际值替换您的解码并将其与语法进行比较。请注意(second_search),您没有比较端口,而只是比较“close”值。这就是为什么您的代码行为怪异的原因。

注意:请注意原始帖子中“true”后缺少的逗号

decode(true,
            'Yes' = 'No' (first_search), 'open' (first_result), 'close' (second_search),
            'Yes' = 'Yes' (second_result), 'open' (third_search), 'close' (third_result),
            'Yes' = 'No' (forth_search), 'open' (forth_result), 'close'(default))

尝试使用类似于下面的代码。这又来自 Informatica 文档。

DECODE( TRUE,
        Var1 = 22, 'Variable 1 was 22!',
        Var2 = 49, 'Variable 2 was 49!',
        Var1 < 23, 'Variable 1 was less than 23.',
        Var2 > 30, 'Variable 2 was more than 30.',
        'Variables were out of desired ranges.')
于 2021-08-25T12:07:57.203 回答
0

DECODE 采用一个值、成对的搜索和结果值,以及可选的默认值。

您似乎使用的是三元组而不是成对的参数。你实际写的是:

decode (true
        testopen = testdoor1, 'open', 
        'close',  testopen = testdoor2, 
        'open', 'close',
        testopen  = testdoor3,
        'open', 'close')
于 2021-08-24T20:19:30.863 回答