对于组密钥记录,复制值替换空值

时间:2015-07-31 11:58:32

标签: sql oracle11g informatica

源表和目标表相同。 1)对于源中的col1,col 2有一些值和null值然后在target中,值应该被复制到替换特定键记录的空值字段。

2)对于源中的col1,如果只有空值,那么在目标col 2中应该有-1

3)对于源中的col1,如果任何时间col1 = ABC则目标col2值必须为-2。

所以, a)源中col 1有两种类型的值:ABC和非ABC。

b)对于记录组,col 2应具有值(如果可用)或-1(如果没有可用值)。

c)对于非ABC记录,目标应为col2 = -2

[![在此处输入图像说明] [1]] [1]

映射流程是什么? 另外,如何在SQl查询中实现。

先谢谢。

SOURCE  
Col1    col2
  P1    123
  P1    NULL
  P1    NULL
  P2    NULL
  P3    NULL
  P3    456
  P4    NULL
  P4    NULL
  ABC   NULL



TARGET  
 Col1   col2
  P1    123
  P1    123
  P1    123
  P2    -1
  P3    456
  P3    456
  P4    -1
  P4    -1
  ABC   -99

2 个答案:

答案 0 :(得分:0)

您可以根据您描述的规则使用分析函数生成所需的目标:

99

这并没有解释你如何获得“{1}}”,但你的问题并没有解释这条规则。

答案 1 :(得分:0)

这是你能做的。在源限定符中使用以下查询:

select col1, max(col2)
from source
group by col1

在Expression转换中实现你的逻辑。例如:

out_col2 := IIF(col1='ABC','-2',
             IIF(ISNULL(col2), -1, col2))

现在通过更新策略(使用DD_UPDATE)传递数据,并将列col1和out_col2连接到目标。

确保您已将col1定义为目标定义中的主键。